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

时间:2019-03-28 01:38:59

标签: java arrays netbeans filereader json-simple

我使用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;

1 个答案:

答案 0 :(得分: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();