为了账号安全,请及时绑定邮箱和手机立即绑定

如何迭代JSONObject?

如何迭代JSONObject?

白猪掌柜的 2019-06-27 17:24:25
如何迭代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    }}
查看完整描述

3 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

也许这会有帮助:

jsonObject = new JSONObject(contents.trim());Iterator<String> keys = jsonObject.keys();while(keys.hasNext()) {
    String key = keys.next();
    if (jsonObject.get(key) instanceof JSONObject) {
          // do something with jsonObject here      
    }}


查看完整回答
反对 回复 2019-06-27
?
墨色风雨

TA贡献1853条经验 获得超6个赞

对于我的情况,我发现迭代names()效果很好

for(int i = 0; i<jobject.names().length(); i++){
    Log.v(TAG, "key = " + jobject.names().getString(i) + " value = " + jobject.get(jobject.names().getString(i)));}


查看完整回答
反对 回复 2019-06-27
?
繁星coding

TA贡献1797条经验 获得超4个赞

我将避免迭代器,因为它们可以在迭代期间添加/删除对象,也可以用于循环的干净代码。它将是简单的干净&较少的线条。

使用Java 8和Lamda[更新4/2/2019]

import org.json.JSONObject;public static void printJsonObject(JSONObject jsonObj) {
    jsonObj.keySet().forEach(keyStr ->
    {
        Object keyvalue = jsonObj.get(keyStr);
        System.out.println("key: "+ keyStr + " value: " + keyvalue);

        //for nested objects iteration if required
        //if (keyvalue instanceof JSONObject)
        //    printJsonObject((JSONObject)keyvalue);
    });}

使用旧方法[更新4/2/2019]

import org.json.JSONObject;public static void printJsonObject(JSONObject jsonObj) {
    for (String keyStr : jsonObj.keySet()) {
        Object keyvalue = jsonObj.get(keyStr);

        //Print key and value
        System.out.println("key: "+ keyStr + " value: " + keyvalue);

        //for nested objects iteration if required
        //if (keyvalue instanceof JSONObject)
        //    printJsonObject((JSONObject)keyvalue);
    }}

原始答案

import org.json.simple.JSONObject;public static void printJsonObject(JSONObject jsonObj) {
    for (Object key : jsonObj.keySet()) {
        //based on you key types
        String keyStr = (String)key;
        Object keyvalue = jsonObj.get(keyStr);

        //Print key and value
        System.out.println("key: "+ keyStr + " value: " + keyvalue);

        //for nested objects iteration if required
        if (keyvalue instanceof JSONObject)
            printJsonObject((JSONObject)keyvalue);
    }}


查看完整回答
反对 回复 2019-06-27
  • 3 回答
  • 0 关注
  • 1637 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信