猿问

如何迭代JSONObject?

如何迭代JSONObject?

我使用一个名为JSON的库JSONObject(如果需要的话,我不介意换)。

我知道怎么迭代JSONArrays,但是当我解析来自Facebook的JSON数据时,我没有得到一个数组,只有一个JSONObject,但是我需要能够通过它的索引访问一个项,例如JSONObject[0]我不知道该怎么做。

{
   "http://http://url.com/": {
      "id": "http://http://url.com//"
   },
   "http://url2.co/": {
      "id": "http://url2.com//",
      "shares": 16
   }
   ,
   "http://url3.com/": {
      "id": "http://url3.com//",
      "shares": 16
   }}


白猪掌柜的
浏览 1638回答 3
3回答

一只萌萌小番薯

也许这会有帮助:jsonObject&nbsp;=&nbsp;new&nbsp;JSONObject(contents.trim());Iterator<String>&nbsp;keys&nbsp;=&nbsp;jsonObject.keys();while(keys.hasNext())&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;key&nbsp;=&nbsp;keys.next(); &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(jsonObject.get(key)&nbsp;instanceof&nbsp;JSONObject)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;do&nbsp;something&nbsp;with&nbsp;jsonObject&nbsp;here&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;}}

墨色风雨

对于我的情况,我发现迭代names()效果很好for(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i<jobject.names().length();&nbsp;i++){ &nbsp;&nbsp;&nbsp;&nbsp;Log.v(TAG,&nbsp;"key&nbsp;=&nbsp;"&nbsp;+&nbsp;jobject.names().getString(i)&nbsp;+&nbsp;"&nbsp;value&nbsp;=&nbsp;"&nbsp;+&nbsp;jobject.get(jobject.names().getString(i)));}

繁星coding

我将避免迭代器,因为它们可以在迭代期间添加/删除对象,也可以用于循环的干净代码。它将是简单的干净&较少的线条。使用Java 8和Lamda[更新4/2/2019]import&nbsp;org.json.JSONObject;public&nbsp;static&nbsp;void&nbsp;printJsonObject(JSONObject&nbsp;jsonObj)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;jsonObj.keySet().forEach(keyStr&nbsp;-> &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;keyvalue&nbsp;=&nbsp;jsonObj.get(keyStr); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("key:&nbsp;"+&nbsp;keyStr&nbsp;+&nbsp;"&nbsp;value:&nbsp;"&nbsp;+&nbsp;keyvalue); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//for&nbsp;nested&nbsp;objects&nbsp;iteration&nbsp;if&nbsp;required &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//if&nbsp;(keyvalue&nbsp;instanceof&nbsp;JSONObject) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;printJsonObject((JSONObject)keyvalue); &nbsp;&nbsp;&nbsp;&nbsp;});}使用旧方法[更新4/2/2019]import&nbsp;org.json.JSONObject;public&nbsp;static&nbsp;void&nbsp;printJsonObject(JSONObject&nbsp;jsonObj)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(String&nbsp;keyStr&nbsp;:&nbsp;jsonObj.keySet())&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;keyvalue&nbsp;=&nbsp;jsonObj.get(keyStr); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Print&nbsp;key&nbsp;and&nbsp;value &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("key:&nbsp;"+&nbsp;keyStr&nbsp;+&nbsp;"&nbsp;value:&nbsp;"&nbsp;+&nbsp;keyvalue); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//for&nbsp;nested&nbsp;objects&nbsp;iteration&nbsp;if&nbsp;required &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//if&nbsp;(keyvalue&nbsp;instanceof&nbsp;JSONObject) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;printJsonObject((JSONObject)keyvalue); &nbsp;&nbsp;&nbsp;&nbsp;}}原始答案import&nbsp;org.json.simple.JSONObject;public&nbsp;static&nbsp;void&nbsp;printJsonObject(JSONObject&nbsp;jsonObj)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(Object&nbsp;key&nbsp;:&nbsp;jsonObj.keySet())&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//based&nbsp;on&nbsp;you&nbsp;key&nbsp;types &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;keyStr&nbsp;=&nbsp;(String)key; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;keyvalue&nbsp;=&nbsp;jsonObj.get(keyStr); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Print&nbsp;key&nbsp;and&nbsp;value &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("key:&nbsp;"+&nbsp;keyStr&nbsp;+&nbsp;"&nbsp;value:&nbsp;"&nbsp;+&nbsp;keyvalue); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//for&nbsp;nested&nbsp;objects&nbsp;iteration&nbsp;if&nbsp;required &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(keyvalue&nbsp;instanceof&nbsp;JSONObject) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printJsonObject((JSONObject)keyvalue); &nbsp;&nbsp;&nbsp;&nbsp;}}
随时随地看视频慕课网APP

相关分类

Java
我要回答