如何从 java / android 中的嵌套 json 对象访问数据? [复制]

Posted

技术标签:

【中文标题】如何从 java / android 中的嵌套 json 对象访问数据? [复制]【英文标题】:How can i access data from nested json objects in java / android? [duplicate] 【发布时间】:2021-07-17 06:50:30 【问题描述】:
    
        "count": 152,
        "filters": ,
        "competitions": [
            
                "id": 2006,
                "area": 
                    "id": 2001,
                    "name": "Africa",
                    "countryCode": "AFR",
                    "ensignUrl": null
                ,
                "name": "WC Qualification",
                "code": null,
                "emblemUrl": null,
                "plan": "TIER_FOUR",
                "currentSeason": 
                    "id": 555,
                    "startDate": "2019-09-04",
                    "endDate": "2021-11-16",
                    "currentMatchday": 1,
                    "winner": null
                ,
                "numberOfAvailableSeasons": 2,
                "lastUpdated": "2018-06-04T23:54:04Z"
            

这是我的 JSON API,我如何访问“区域”中的数据以及“比赛”中的数据。


#i 能够从“竞赛”访问数据,下面是我的代码:

 JSONObject jsonObject = new JSONObject(responseValue);
                            JSONArray jsonArray = jsonObject.getJSONArray("competitions");
                            competitionsModelList = new ArrayList<>();
    
                            for (int i = 0; i < jsonArray.length(); i++) 
                                JSONObject jitems = jsonArray.getJSONObject(i);
                                name = jitems.getString("name");
                                id = jitems.getInt("id");
                                code = jitems.getString("code");
                                emblemUrl = jitems.getString("emblemUrl");
                                plan = jitems.getString("plan");
                                numberOfSeasonAvailable = items.getInt("numberOfAvailableSeasons");
                                lastUpdated = jitems.getString("lastUpdated");


现在我想从“区域”访问数据。 谢谢

【问题讨论】:

使用 Gson 将 JSON 映射到对其建模的 Java 对象上,而不是尝试手动进行所有提取。 帮助..请发布一些代码片段 【参考方案1】:

您可以从jitems 创建一个新的 JSON 对象:

for (int i = 0; i < jsonArray.length(); i++) 
    JSONObject jitems = jsonArray.getJSONObject(i);
    JSONObject area = jitems.getJSONObject("area");
    String name = area.getString("name");
    ...

【讨论】:

【参考方案2】:

您可以通过以下方式访问

try
    
        JSONObject jsonObject = new JSONObject(responseValue);
        JSONArray jsonArray = jsonObject.getJSONArray("competitions");
        for (int i = 0; i < jsonArray.length(); i++) 
            JSONObject jitems = jsonArray.getJSONObject(i);

            id = jitems.getInt("id");
            name = jitems.getString("name");
            code = jitems.getString("code");
            emblemUrl = jitems.getString("emblemUrl");
            plan = jitems.getString("plan");
            numberOfSeasonAvailable = jitems.getInt("numberOfAvailableSeasons");
            lastUpdated = jitems.getString("lastUpdated");

            JSONObject jitemsArea = jitems.getJSONObject("area");
            areaId = jitemsArea.getInt("id");
            areaName = jitemsArea.getString("name");
            areaCountryCode = jitemsArea.getString("countryCode");


        
     catch (JSONException e) 
        e.printStackTrace();
    

【讨论】:

以上是关于如何从 java / android 中的嵌套 json 对象访问数据? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

从 Java Android 中的嵌套 JSON 对象获取数据

在JAVA中如何跳出当前的多重嵌套循环?

在Java中,如何跳出当前的多重嵌套循环?

如何打破 Java 中的嵌套循环?

在java中,如何跳出当前的嵌套循环

如何打破 Dart 中的嵌套循环