【问题标题】:Accessing Nested Elements of JSON in Java在 Java 中访问 JSON 的嵌套元素
【发布时间】:2023-01-10 00:15:48
【问题描述】:

我有一个 java 项目,我在其中获取一个 JSON 并读取其内容。我正在使用 org.json 库,我想遍历嵌套在 JSONArray 中的 JSONObjects,而 JSONArray 嵌套在 JSONObject 中。虽然我不断收到此错误:JSONArray 初始值应该是字符串或集合或数组。我专门从网络资源获取 JSON,但这里有一个例子:http://jsonblob.com/1062033947625799680 我特别担心每个玩家资料都未命名这一事实,但可能有一个简单的解决办法。

我想访问每个玩家的个人资料,这是导致错误的原因:

import org.json.*;
JSONObject JSON = new JSONObject(content1.toString());
        JSONArray data = new JSONArray(JSON.getJSONArray("data"));
        for(int z = 1; i<data.length(); i++)
        {
          JSONObject ply = new JSONObject(data.getJSONObject(z));
          System.out.println(ply.toString());
        }

我有一种感觉,我只是不完全理解 JSON 的术语和/或我正在使用的库,但我们非常感谢您的帮助。

【问题讨论】:

    标签: java json org.json


    【解决方案1】:

    试试这个:

    JSONObject JSON = new JSONObject(content1.toString());
    JSONArray data = new JSONArray(JSON.getJSONArray("data"));
    for(int i = 0; i<data.length(); i++) {
      JSONObject ply = data.getJSONObject(i);
      System.out.println(ply.toString());
    }
    

    【讨论】:

      【解决方案2】:

      看起来您正在尝试使用 JSON.getJSONArray("data") 创建一个 JSONArray 对象,但 getJSONArray 需要一个字符串作为参数,而您正在向它传递一个实际的 JSONArray 对象。

      要访问数据数组,您只需执行以下操作:

      JSONArray data = JSON.getJSONArray("data");
      

      然后,您可以使用 for 循环遍历数据数组,就像您正在做的那样。但是,您的循环条件有一个错误:您使用的是 i 而不是 z。它应该是:

      for(int z = 1; z<data.length(); z++)
      

      最后,要访问每个播放器配置文件,您可以执行以下操作:

      JSONObject ply = data.getJSONObject(z);
      

      我希望这有帮助!如果您还有其他问题,请告诉我。

      【讨论】:

        猜你喜欢
        • 2016-07-16
        • 1970-01-01
        • 1970-01-01
        • 2018-04-09
        • 1970-01-01
        • 2020-10-25
        • 1970-01-01
        • 2017-07-19
        • 2021-07-09
        相关资源
        最近更新 更多