繁体   English   中英

如何获取包含JSON对象和数组的JSON数据

[英]How to get JSON data that contains JSON Object and array both

*我已经从responce.body()获取此JSON对象。 我想把它里面的每个数据分别变量。 我正在使用java。

    {  
   "Classes":{  
      "Primary":{  
         "Classes":{  
            "1":{  
               "section":[  
                  "a",
                  "b"
               ]
            },
            "2":{  
               "sections":[  
                  "a",
                  "b"
               ]
            }
         }
      }
   }
}

*我知道如何获取JSONObject但我不知道如何在“section”中获取该数组。 即使我用JSONArray获取该数组,那么如何将其转换为JSONObject? 或字符串。

*注意“section”数组的内部值是动态的,该数组内的值是动态的,可以是从“a”到“z”的多重数组。 “Classes”(主要内部)中的JSONObject也是动态的。 可以有动态和多个“1”,“2”......它是字符串,没有必要增加数字。

您已将其标记为java,因此我只能假设您需要该语言的解决方案。

要使用此数据需要进行解析,这意味着您要将数据转换为更有用的类型。

单击按钮以了解如何在java中解析JSON

假设你需要java中的解决方案,使用来获取json结构的对象类,然后使用像GSON这样的库将json转换为java对象。

例:

String json = "{\"city\":\"San Jose\", \"state\": \"CA\", \"country\":\"USA\"}";

Gson gson = new Gson();

Place place = gson.fromJson(json, Place.class);

经过30分钟的战争 ,我找到你的答案只需复制这段代码并粘贴你想要使用的地方 -

这里是 -

            String json = "{
              "Classes": {
                "Primary": {
                  "Classes": {
                    "1": {
                      "section": [
                        "a",
                        "b"
                      ]
                    },
                    "2": {
                      "sections": [
                        "a",
                        "b"
                      ]
                    }
                  }
                }
              }
            }";

            try {
                JSONObject jsonObject = new JSONObject(json);
                Log.d("jsonObj", jsonObject.toString());

                JSONObject classJsonObj = jsonObject.optJSONObject("Classes");
                JSONObject primaryJsonObj = classJsonObj.optJSONObject("Primary");
                JSONObject internalClassJsonObj = primaryJsonObj.optJSONObject("Classes");

                if(internalClassJsonObj != null){
                    int i = 1;
                    JSONObject dynmaicInternalJsonObj = null;
                    while (true){
                        dynmaicInternalJsonObj = internalClassJsonObj.optJSONObject(i+"");
                        if(dynmaicInternalJsonObj != null){
                            JSONArray sectionJsonArr = dynmaicInternalJsonObj.optJSONArray("sections");
                            Log.d("SectionArr", sectionJsonArr.toString());

                            // Finally you got your section data here...
                            if(sectionJsonArr != null){
                                for(int j=0; j<sectionJsonArr.length(); j++){
                                    System.out.println("Dynamic Sections Data is: - " + sectionJsonArr.opt(j));
                                }

                                System.out.println("\n\n");
                            }

                        }else{
                            break;
                        }

                        i++;
                    }

                }

            } catch (JSONException e) {
                e.printStackTrace();
            }

如果您使用的是ionic(typescript或javascript),则可以使用以下方法

var json = "{
          "Classes": {
            "Primary": {
              "Classes": {
                "1": {
                  "section": [
                    "a",
                    "b"
                  ]
                },
                "2": {
                  "sections": [
                    "a",
                    "b"
                  ]
                }
              }
            }
          }
        }";
for(let item in json.Classes.Primary.Classes){
console.log(item.sections);
}

如果要使用html在前端显示相同的数据,请使用* ngFor

<div *ngFor="let item in json.Classes.Primary.Classes ">
 <h5>{{item.sections}}</h5>
</div>

我希望它有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM