我有我的類的自定義解串器,如下圖所示:如何在自定義解串器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