java - JSONObject内部多个JSONObject的Android JSON解析

标签 java android json

我有一个来自服务器的 JSON 字符串,它看起来像这样:

{
    "categories": {
        "0": {
            "term_id": "247",
            "name": "Content Curation"
        },
        "1": {
            "term_id": "50",
            "name": "Content Marketing"
        },
        "2": {
            "term_id": "2",
            "name": "Curation"
        },
        "3": {
            "term_id": "246",
            "name": "Inbound Marketing"
        },
        "4": {
            "term_id": "47",
            "name": "Marketing"
        },
        "5": {
            "term_id": "4",
            "name": "News Curation"
        },
        "6": {
            "term_id": "36",
            "name": "SEO"
        },
        "8": {
            "term_id": "248",
            "name": "Wordpress Content Curation"
        }
    }
}

我的任务是获取“term_id”和“name”字段的值。 我曾经使用以下代码从当前 JSONObject 获取“类别”对象:

JSONObject jObject = new JSONObject(responceData);
JSONObject categoryObject = jObject.getJSONObject("categories");
JSONArray  jarray = new JSONArray("["+categoryObject.toString().substring(1,categoryObject.toString().length() - 1) + "]");

for(int i=0;i<jarray.length();i++)
{
     JSONObject jobj = jarray.getJSONObject(i);
     String term_id=jobj.getString("term_id");
     String name=jobj.getString("name");
}

categoryObject 看起来像这样:

{
    "0": {
        "term_id": "247",
        "name": "Content Curation"
    },
    "1": {
        "term_id": "50",
        "name": "Content Marketing"
    },
    "2": {
        "term_id": "2",
        "name": "Curation"
    },
    "3": {
        "term_id": "246",
        "name": "Inbound Marketing"
    },
    "4": {
        "term_id": "47",
        "name": "Marketing"
    },
    "5": {
        "term_id": "4",
        "name": "News Curation"
    },
    "6": {
        "term_id": "36",
        "name": "SEO"
    },
    "8": {
        "term_id": "248",
        "name": "Wordpress Content Curation"
    }
}

但在那之后我不知道如何获取字段。有没有办法从 JSONObject 中获取所有 JSONObject 子对象?

如果你有源代码或者可以给我一个例子,请与我分享。

最佳答案

在这里你可以检索你所有的 json 数据,请求一个特定的键和 innerKey 来得到你想要的,干杯

    try
    {   
        String jsonString="";//your json string here
        JSONObject jObject= new JSONObject(jsonString).getJSONObject("categories");
        Iterator<String> keys = jObject.keys();
        while( keys.hasNext() )
        {
            String key = keys.next();
            Log.v("**********", "**********");
            Log.v("category key", key);
            JSONObject innerJObject = jObject.getJSONObject(key);
            Iterator<String> innerKeys = innerJObject.keys();
            while( innerKeys.hasNext() )
            {
                String innerKkey = keys.next();
                String value = innerJObject.getString(innerKkey);
                Log.v("key = "+key, "value = "+value);
            }
        }
    }
    catch (JSONException e)
    {   e.printStackTrace();    }

关于java - JSONObject内部多个JSONObject的Android JSON解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22606572/

相关文章:

java - Runime.getRuntime().totalMemory() 和 ActivityManager.MemoryInfo()

javascript - NODEJS解析从谷歌表格获取的单元格值

java - 如何通过共享首选项保存菜单项可见性状态?

javascript - 使用 escapeParameters sanitizer 插值参数时出现 Angular 翻译问题

java - JSON 解析错误 : Can not construct instance of class

java - 如何将 python Bolt 集成到 Apache Storm 的 Java 拓扑中?

java - 404 Not found Spring boot war to Tomcat

java - Grails WAR 无法在 java 类中找到文件

Java 同步未按(我)预期工作

Jenkins 中的 Android 模拟器