如何在 jsonObject 中获取数组中的某些元素

How to get a certain elements inside an array inside a jsonObject

我正在使用 JSON 在 java 中导出一些数据,然后我正在读取该数据并尝试从 JSON 对象内的数组中获取元素,但我有问题。

我尝试了很多方法,比如

jsonObject.get("InGameCord").get("x")
Object Testo = jsonObject.get("InGameCord");
Testo.x

诸如此类的事情以及更多不起作用的事情,因此删除了代码。

这是导出的 JSON 文件,我正在尝试访问 InGameCord 数组 X 或 Y。

{"BaseID":1,"BaseName":"Bandar-e-Jask Airbase","InGameCord":[{"x":463,"y":451}]}

这是我的文件reader代码

FileReader reader = new FileReader(filename);
JSONParser jsonParser = new JSONParser();
JSONObject jsonObject = (JSONObject) jsonParser.parse(reader);
System.out.println(jsonObject);
System.out.println("BaseName: "+jsonObject.get("BaseName"));
System.out.println("BaseID: "+jsonObject.get("BaseID"));
System.out.println("InGameCord: "+jsonObject.get("InGameCord"));

所有这些都有效并导出正确的信息。

所以我试图让我们说出 InGameCord 的 X 值。

int X = 463;

根据您的 JSON 数据 {"BaseID":1,"BaseName":"Bandar-e-Jask Airbase","InGameCord":[{"x":463,"y":451}]}:

  • "InGameCord" 是可以实例化为 JSONArray.
  • 的数组的名称
  • 该数组只包含一个元素:{"x":463,"y":451}
  • 该数组元素可以实例化为 JSONObject。它包含两个 name/value 对:

    • "x" 值为 463。
    • "y" 值为 451。

所以根据你提供的代码,实例化JSONArray:

JSONArray numbers = (JSONArray) jsonObject.get("InGameCord");

将数组的第一个(也是唯一一个)元素检索到 JSONObject:

JSONObject jObj = (JSONObject) numbers.get(0);

要将 "x" 的值转换为 int 变量,请将 get() 返回的 Object 转换为 Number,然后获取其 intValue():

int value = ((Number) jObj.get("x")).intValue();

你甚至可以在一行中完成所有事情,但这很丑陋:

int y = ((Number) ((JSONObject) numbers.get(0)).get("y")).intValue();