2

我有带有动态元素的 JSON 字符串,直到现在我将它解析为 Map:

Map map = new Gson().fromJson(jsonString, 
        new TypeToken<HashMap<String, String>>() {}.getType());

现在我需要解决这种情况 - 这些动态变量之一可能是另一个 JSON 字符串。

你有什么建议可以解决吗?提前致谢。

编辑:添加了 JSON 字符串示例(格式化):

{
    "key1": "val1",
    "key2": "val2",
    "key3": {
        "subkey1": [
            "subvalue1",
            "subvalue1"
        ],
        "subkey‌​2": [
            "subvalue2"
        ]
    },
    "key4": "val3"
}
4

1 回答 1

3

你所说的另一个 JSON 字符串只是一个 json 对象。将 Map 值类型从String更改为Object:TypeToken>

String jsonString = "{\"key1\":\"val1\",\"key2\":\"val2\",\"key3\": {\"subkey1\":\"subvalue1\",\"subkey2\":\"subvalue2\"},\"key4\":\"val3\"}";

Map<String, Object> map = new Gson().fromJson(jsonString, new TypeToken<Map<String, Object>>() {
}.getType());

上面的示例适用于 GSON 2.2.2。和 sysout(map) 产生

{key1=val1, key2=val2, key3={subkey1=subvalue1, subkey2=subvalue2}, key4=val3}

作为一个小的改进,我建议您明确指定映射类型参数,并使用 Map 而不是 HashMap 作为 TypeToken。

于 2012-08-31T13:02:12.353 回答