我创建了一个反序列化,只要它看到字符串“nil”,它就会返回null。
private static Gson createCustomGson() {
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(String.class, new JsonDeserializer<String>() {
@Override
public String deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) {
return (json.getAsString().equals("nil")) ? null : json.getAsString();
}
});
return gsonBuilder.create();
}
它工作正常除了,我想添加一个异常,对于存储List的字段“Keyword”,我不想消除nil返回null,但保留String。如何为“关键字”添加例外?
我的关键字类属于以下类型
public class KeywordListing implements Serializable {
List<String> keys;
}
答案 0 :(得分:0)
找到解决方案。这是通过添加另一个TypeAdapter来使用Gson的默认去分类,如下所示。
private static Gson createCustomGson() {
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(String.class, new JsonDeserializer<String>() {
@Override
public String deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) {
return (json.getAsString().equals("nil")) ? null : json.getAsString();
}
});
gsonBuilder.registerTypeAdapter(KeywordListing.class, new JsonDeserializer< KeywordListing >() {
@Override
public KeywordListing deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) {
return new Gson().fromJson(json, KeywordListing.class);
}
});
return gsonBuilder.create();
}
如果答案比我上面的答案更短,请告诉我。