Gson gson = new GsonBuilder().registerTypeHierarchyAdapter(List.class, new JsonDeserializer<List<?>>() {
@Override
public List<?> deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
if (json.isJsonArray()){
//这里要自己负责解析了
Gson newGson = new Gson();
try {
return newGson.fromJson(json,typeOfT);
}catch (Exception e){
return Collections.EMPTY_LIST;//解析异常返回空数组
}
}else {
//和接口类型不符,返回空List
return Collections.EMPTY_LIST;
}
}
}).create();
registerTypeHierarchAdapter注册一个反序列号。上面是list中值是null的问题。
int,string都可以参照上面方式处理,在deserialize中处理json数据。