如何在json中从根目录遍历JSONObject简单?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (66)

我正在尝试使用json简单地遍历一个json对象。我已经看到了可以从中执行getJSONObject(“child”)的答案

{ "child": { "something": "value", "something2": "value" } }

但如果我只是有一些东西

{
"k1":"v1",
"k2":"v2",
"k3":"v3"
} 

并想迭代该json对象。这个:

Iterator iter = jObj.keys();

抛出:cannot find symbol symbol : method keys() location: class org.json.simple.JSONObject

提问于
用户回答回答于

假设你的JSON对象保存在一个文件“simple.json”中,你可以迭代属性值对,如下所示:

JSONParser parser = new JSONParser();

Object obj = parser.parse(new FileReader("simple.json"));

JSONObject jsonObject = (JSONObject) obj;

for(Iterator iterator = jsonObject.keySet().iterator(); iterator.hasNext();) {
    String key = (String) iterator.next();
    System.out.println(jsonObject.get(key));
}
用户回答回答于

你可以这样做

String jsonstring = "{ \"child\": { \"something\": \"value\", \"something2\": \"value\" } }";
JSONObject resobj = new JSONObject(jsonstring);
Iterator<?> keys = resobj.keys();
while(keys.hasNext() ) {
    String key = (String)keys.next();
    if ( resobj.get(key) instanceof JSONObject ) {
        JSONObject xx = new JSONObject(resobj.get(key).toString());
        Log.d("res1",xx.getString("something"));
        Log.d("res2",xx.getString("something2"));
    }
}

扫码关注云+社区