我使用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;
鉴于您的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();