**
The JsonDeserializer StringTypeAdapter failed to deserialize json object {} given the type class java.lang.String
**
解决方案如下:
1、新增String类型解析器StringDefault0Adapter
//反序列化做如下处理:
public String deserialize(JsonElement json, Type type, JsonDeserializationContext jsonDeserializationContext) {
//1、JsonElement为JsonObject则先转换为JsonObject再转换成字符串String
if (json.isJsonObject()) {
return json.getAsJsonObject().toString();
}
//2、JsonElement为JsonArray则先转换为JsonArray再转换成字符串String
else if(json.isJsonArray()){
return json.getAsJsonArray().toString();
}
//3、直接转换成字符串String
else{
return json.getAsString();
}
}
2、GsonBuilder注册新增的解析器
public static Gson buildGson() {
if (gson == null) {
gson = new GsonBuilder()
.registerTypeAdapter(Integer.class, new IntegerDefault0Adapter())
.registerTypeAdapter(Double.class, new DoubleDeserializerAdapter())
.registerTypeAdapter(int.class, new IntegerDefault0Adapter())
.registerTypeAdapter(Long.class, new LongDefault0Adapter())
.registerTypeAdapter(long.class, new LongDefault0Adapter())
.registerTypeAdapter(Date.class, new DateDefault0Adapter())
.registerTypeAdapter(double.class, new DoubleDeserializerAdapter())
.registerTypeAdapter(String.class,new StringDefault0Adapter())
.create();
}