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

问题描述 投票:0回答:1

我使用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}]}

这是我的文件阅读器代码

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;
java arrays netbeans filereader json-simple
1个回答
0
投票

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

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

因此,根据您提供的代码,实例化JSONArray

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

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

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

为了将“x”的值变为int变量,将Object返回的get()投射到Number,然后得到它的intValue()

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

你甚至可以在一行中完成整个过程,但它很难看:

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

© www.soinside.com 2019 - 2024. All rights reserved.