我有我的类的自定义解串器,如下图所示:如何在自定义解串器Gson中使用JsonElement值?
private class HolderDeserializer implements JsonDeserializer<Holder> {
@Override
public Holder deserialize(JsonElement json, Type type, JsonDeserializationContext context)
throws JsonParseException {
Type mapType = new TypeToken<Map<String, String>>() {}.getType();
// in the below data map, I want value to be stored in lowercase
// how can I do that?
Map<String, String> data = context.deserialize(json, mapType);
return new Holder(data);
}
}
这就是我如何注册创建GSON对象时我解串器:
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(Holder.class, new HolderDeserializer());
Gson gson = gsonBuilder.create();
最后,分析我的JSON这样:
Type responseType = new TypeToken<Map<String, Holder>>() {}.getType();
Map<String, Holder> response = gson.fromJson(jsonLine, responseType);
在我deserialize
方法的json
值来作为这样{"linkedTo":"COUNT"}
,然后将其作为{linkedTo=COUNT}
加载到数据映射中。我想看看data
地图的所有值是否可以用小写字母表示,而不是这个{linkedTo=COUNT}
,它应该在数据地图中自动存储像这样的{linkedTo=count}
?
有什么办法可以自动在Gson中做到这一点?
更新:
下面是我的JSON内容:
{
"abc": {
"linkedTo": "COUNT",
// possibly more data...
},
"plmtq": {
"linkedTo": "TITLE",
"decode": "TRUE",
// possibly more data...
}
}
请分享您的JSON内容 – Devrim
@DevrimTuncer更新了我的JSON的问题。 – john