默认的Gson解析有时不能满足业务的需求,可能需要设置对Gson进行一些配置
.addConverterFactory(GsonConverterFactory.create(new Gson()))
可以在配置Gson转换时传入我们另行配置的Gson
比如我们想要对所有的解析异常都不报错,而是设置为null。
public final class SafeTypeAdapterFactory implements TypeAdapterFactory{
@Override
public TypeAdapter create(Gson gson, final TypeToken type) {
final TypeAdapter delegate = gson.getDelegateAdapter(this,type);
return new TypeAdapter() {
@Override
public void write(JsonWriter out, T value) throws IOException {
try {
delegate.write(out, value);
} catch (IOException e) {
delegate.write(out, null);
}
}
@Override
public T read(JsonReader in) throws IOException {
try {
return delegate.read(in);
} catch (IOException e) {
in.skipValue();
return null;
} catch (IllegalStateException e) {
in.skipValue();
return null;
} catch (JsonSyntaxException e) {
in.skipValue();
if(type.getType() instanceof Class){
try {
return (T) ((Class)type.getType()).newInstance();
} catch (Exception e1) {
}
}
return null;
}
}
};
}
}
Gson myGson = new GsonBuilder().registerTypeAdapterFactory(new SafeTypeAdapterFactory()).create();
作者:汪汪一只猫
链接:http://www.imooc.com/article/78804
来源:慕课网