如何在 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();
我正在使用 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();