1
我正在嘗試爲類(以及它的子級)創建自定義JsonSerializer
。 所以我遍歷了這個類的Fields並做了一些東西。 我面臨的問題:如果我有在我的課是這樣的:Java:Gson - 哈希映射到自定義JsonSerializer中的JSON
public Map<String, Map<String, Integer>> nestedHashMap = new HashMap<String, Map<String, Integer>>() {{
put("levelOneKey", new HashMap<String, Integer>() {{
put("levelTwoKey", 25);
}});
}};
它變成{}
。我檢查過,它有創建元素,GSON無法正確處理它。如果我嘗試在沒有JsonSerializer的情況下使用GSON,它就會起作用。顯然,我做錯了什麼。我對Java Reflection沒有太多經驗。我的代碼
部分:
@Override
public JsonElement serialize(JsonConfig src, Type typeOfSrc, JsonSerializationContext context) {
JsonObject o = new JsonObject();
//...
Field[] fields = src.getClass().getDeclaredFields();
for (Field field : fields) {
Object fieldValue = null;
try {
fieldValue = field.get(src);
} catch (IllegalAccessException e) {
System.out.print("IllegalAccessException for field " + field.getName() + ": " + e.toString());
continue;
}
o.add(field.getName(), context.serialize(fieldValue, field.getType()));
}
//...
}
我試圖創建GSON的另一個實例並將其替換o.add
:
o.add(field.getName(), gson.toJson(fieldValue, field.getType()));
我查了一下,fieldValue
有元素。