java - 在 Java 中重新解析 JSON 对象?

标签 java json

所以我有一个 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/

相关文章:

java - Hive JDBC - getConnection 失败时连接泄漏

java - Java 中的 "double, Double, HashSet"

java - Android:围绕中心旋转图像?

java - json 周围的额外大括号导致解析问题

javascript - Ajax Post 请求返回 JSON 但延迟失败

java - 无法解析 JSON : No JsonObject

java - 如何在 Java 中实现具有继承性的 Fluent Builder

Python 将 JSON 反序列化为 unicode 时出现问题

javascript - 如何在javascript中找到对象的长度?

java - JHipster > 发出 post 请求时访问被拒绝