Gson - 如何用嵌套的JSON解析动态JSON字符串?

时间:2012-08-31 11:50:31

标签: java json parsing gson

我有动态元素的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"
}

1 个答案:

答案 0 :(得分:3)

你所谓的另一个JSON字符串只是一个json对象。将地图值类型从字符串更改为对象:TypeToken&gt;

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。