仅使用字符串和值解析 JSON 对象

Posted

技术标签:

【中文标题】仅使用字符串和值解析 JSON 对象【英文标题】:Parse JSON object with string and value only 【发布时间】:2011-05-23 09:27:01 【问题描述】:

我在尝试使用最小值解析以在 android 中进行映射时遇到问题。

有一些带有更多信息的示例 JSON 格式:

[id:"1", name:"sql",id:"2",name:"android",id:"3",name:"mvc"]

这是最常用且易于使用的示例,只需使用 getString("id")getValue("name")

但是我如何使用这种 JSON 格式解析以映射到只有字符串和值最小格式的映射到使用循环的 java 映射集合。而且因为字符串 json 总是会彼此不同。例如:

"1":"sql", "2":"android", "3":"mvc"

谢谢

【问题讨论】:

【参考方案1】:

您需要获取所有键的列表,遍历它们并将它们添加到您的地图中,如下例所示:

    String s = "menu:\"1\":\"sql\", \"2\":\"android\", \"3\":\"mvc\"";
    JSONObject jObject  = new JSONObject(s);
    JSONObject  menu = jObject.getJSONObject("menu");

    Map<String,String> map = new HashMap<String,String>();
    Iterator iter = menu.keys();
    while(iter.hasNext())
        String key = (String)iter.next();
        String value = menu.getString(key);
        map.put(key,value);
    

【讨论】:

JSONObject 的导入是什么? @8bitjunkie,这是 org.json:json【参考方案2】:

我的伪代码示例如下:

JSONArray jsonArray = "[id:\"1\", name:\"sql\",id:\"2\",name:\"android\",id:\"3\",name:\"mvc\"]";
JSON newJson = new JSON();

for (each json in jsonArray) 
    String id = json.get("id");
    String name = json.get("name");

    newJson.put(id, name);


return newJson;

【讨论】:

可能是因为他们询问的是 json 对象而不是 json 数组。 @PixMach OP 提供的字符串是一个 JSON 数组。它以[ 开头,以] 结尾。

以上是关于仅使用字符串和值解析 JSON 对象的主要内容,如果未能解决你的问题,请参考以下文章

Javascript:使用自定义键名和值将字符串数组解析为对象

从 JSON 字符串到字典的简单解析器

在 json 文档中没有指定键的 bigquery 中从 json 字符串中提取键和值

使用 T-SQL 解析 JSON

JSON

从 json 值解析 JSON 对象字符串