我想使用这种方法将HashMap转换为
JSON格式:
public String JSObject(Object object) {
Gson gson = new Gson();
return gson.toJson(object);
}
但问题是,当我的HashMap将另一个HashMap作为结果中的键时,我在JSON中什么都没有.假设我在Java中有这样的东西:
put("key", HashMap);
转换后,我的JSON看起来像这样:
"key" : {}
我想要的显然是某种这样的:
"key" : {
"key1" : "value1",
"key2" : "value2"
}
这是因为json()不支持更复杂的JSON吗?我认为这更可能是我做错了什么.
@编辑
这是我初始化地图的方式:
put("key", new HashMap<String,String>(){{
put("key1", "value1");
}};
最佳答案 有了这个:
final HashMap<String, String> value = new HashMap<String, String>(){{
put("key1", "value1");
}};
您正在使用实例初始化程序创建新的AnonymousInnerClass.
来自Gson docs:
Gson can also deserialize static nested classes. However, Gson can not automatically deserialize the pure inner classes since their no-args constructor also need a reference to the containing Object which is not available at the time of deserialization.
只需将您的地图更改为不使用实例初始值设定项:
final Map<String, String> value = new HashMap<>();
value.put("key", "value");