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
有元素。