所以我有一个 JSONObject(或 String..),如下所示:
{"locations":[{"GeocodeResponse":{"result":{"formatted_address":"Tchibanga (TCH), Gabon","address_component":[{"long_name":"Tchibanga","type":
["airport","establishment","transit_station"],"short_name":"Tchibanga"},{"long_name":"Mougoutsi","type":
["administrative_area_level_2","political"],"short_name":"Mougoutsi"},{"long_name":"Nyanga","type":
["administrative_area_level_1","political"],"short_name":"Nyanga"},{"long_name":"Gabon","type":
["country","political"],"short_name":"GA"}],"type":["airport","establishment","transit_station"],"geometry":
{"viewport":{"southwest":{"lng":"10.9968524","lat":"-2.8198146"},"northeast":{"lng":"11.0031476","lat":"-2.8135194"}},"location_type":"APPROXIMATE","location":{"lng":"11","lat":"-2.816667"}}},"status":"OK"}}]}
但是信息太多了,我只想说
{"locations":[{"id":"Tchibanga(TCH)","parentId":"TCH","airport":"Tchibanga","category":"Airport","location":{"longitude":"11","latitude":"-2.816667"},"name":"Nyanga","country":"GA"}]}
我该如何正确解析这个?
编辑:不,我对获取另一个库来解析它不感兴趣。
最佳答案
您需要从 here 获取 JSON 库(您必须编译源代码并确保这些类位于您的类路径中)并创建一个 JSONObject
。
JSONObject
只是一个包含更多映射、数组和对象的映射。解析起来很容易(但很麻烦),因为有太多嵌套。让我们看一下如何解析第一个 long_name
的值。如果您查看 JSON 源字符串,您将看到 long_name
的位置位于 locations/GeocodeResponse/result/address_component
中。所以你会做这样的事情:
//create a jsonObject
JSONObject jsonObject = new JSONObject("{ \"locations\" ...<snipped>... ] }");
//run some getters until you get to the address_component
JSONArray locations = (JSONArray)jsonObject.get("locations");
JSONObject location = (JSONObject)locations.get(0); // get the first location
JSONObject geoCodeResponse = (JSONObject)location.get("GeocodeResponse");
JSONObject result = (JSONObject)geoCodeResponse.get("result");
JSONArray addressArray = (JSONArray)result.get("address_component");
//print out the long_name from the address
JSONObject address = (JSONObject)addressArray.get(0);
String longName = (String)address.get("long_name");
System.out.println(longName); //prints Tchibanga
但是,我建议使用 JsonPath为了让您的生活更轻松。
一旦您选择了所需的元素,您就可以构建所需的输出 JSONObject
。
关于java - 在 Java 中重新解析 JSON 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3812800/