46 lines
1.2 KiB
Java
46 lines
1.2 KiB
Java
package com.uiuipad.os.gson;
|
|
|
|
import com.google.gson.Gson;
|
|
import com.google.gson.TypeAdapter;
|
|
import com.google.gson.TypeAdapterFactory;
|
|
import com.google.gson.reflect.TypeToken;
|
|
import com.google.gson.stream.JsonReader;
|
|
import com.google.gson.stream.JsonToken;
|
|
import com.google.gson.stream.JsonWriter;
|
|
|
|
import java.io.IOException;
|
|
|
|
public class NullStringToEmptyAdapterFactory<T> implements TypeAdapterFactory {
|
|
@Override
|
|
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
|
|
|
|
Class<T> rawType = (Class<T>) type.getRawType();
|
|
if (rawType != String.class) {
|
|
return null;
|
|
}
|
|
return (TypeAdapter<T>) new StringAdapter();
|
|
}
|
|
|
|
public static class StringAdapter extends TypeAdapter<String> {
|
|
@Override
|
|
public String read(JsonReader reader) throws IOException {
|
|
if (reader.peek() == JsonToken.NULL) {
|
|
reader.nextNull();
|
|
return "";
|
|
}
|
|
return reader.nextString();
|
|
}
|
|
|
|
@Override
|
|
public void write(JsonWriter writer, String value) throws IOException {
|
|
if (value == null) {
|
|
writer.nullValue();
|
|
return;
|
|
}
|
|
writer.value(value);
|
|
}
|
|
}
|
|
|
|
}
|
|
|