Gson - 如何解析动态JSON字符串与嵌套JSON? [英] Gson - how to parse dynamic JSON string with nested JSON?

查看:155
本文介绍了Gson - 如何解析动态JSON字符串与嵌套JSON?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  Map map = new Gson()使用动态元素的JSON字符串,直到现在我解析为Map: .fromJson(jsonString,
New TypeToken< HashMap< String,String>>(){} .getType());

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

你有什么建议可以解决它吗?


$ b

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

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


解决方案

你调用另一个JSON字符串只是一个json对象。从字符串更改Map值类型为 Object :TypeToken>

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

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

上面的例子适用于GSON 2.2.2。并且sysout(map)产生

$ p $ lt; code> {key1 = val1,key2 = val2,key3 = {subkey1 = subvalue1,subkey2 = subvalue2} ,key4 = val3}

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


I have JSON string with dynamic elements, till now I parse it into Map:

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

Now I need to solve thsi situation - one of these dynamic variables could be another JSON string.

Do you have some advice ho to solve it? Thanks in advance.

EDIT: JSON string example added (formatted):

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

解决方案

What you call another JSON string is just a json object. Change the Map value type to Object from String: 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());

The above example works with GSON 2.2.2. And sysout(map) produces

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

As a small improvement I'd suggest that you explicitly specify map type parameters, and use Map instead of HashMap for the TypeToken.

这篇关于Gson - 如何解析动态JSON字符串与嵌套JSON?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆