我使用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;
答案 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();