java – HashMap to gson with maps as values

我想使用这种方法将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");
点赞