在Java中重新解析JSON对象?

在Java中重新解析JSON对象?,java,json,Java,Json,因此,我有一个JSONObject(或字符串…)如下所示: {"locations":[{"GeocodeResponse":{"result":{"formatted_address":"Tchibanga (TCH), Gabon","address_component":[{"long_name":"Tchibanga","type": ["airport","establishment","transit_station"],"short_name":"Tchibanga"},{

因此,我有一个JSONObject(或字符串…)如下所示:

    {"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"}]}
我将如何正确地解析它


编辑:不,我不想让另一个库来解析它。

看来,您想要的只是将一个JSON块转换成另一个块。也许这个问题会帮你解决:

看起来你想要的是简单地将一个JSON块转换成另一个块。也许这个问题可以帮助您解决:

允许您在对象图中包含/排除特定对象。

允许您在对象图中包含/排除特定对象。

检查Jackson库

检查Jackson库

您需要从获取JSON库(您必须编译源代码并确保类位于类路径上)并创建一个
JSONObject

JSONObject
只是一个包含更多映射、数组和对象的映射。由于嵌套太多,解析起来相当容易(但很麻烦)。让我们来看看如何解析第一个<代码>长名称>代码>。如果查看JSON源字符串,您将看到
long\u name
的位置在
locations/GeocodeResponse/result/address\u组件中。所以你可以这样做:

//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
//创建一个jsonObject
JSONObject JSONObject=新的JSONObject(“{\”位置\“…]”});
//运行一些getter,直到到达address\u组件
JSONArray位置=(JSONArray)jsonObject.get(“位置”);
JSONObject位置=(JSONObject)位置。获取(0);//获取第一个位置
JSONObject geoCodeResponse=(JSONObject)location.get(“geoCodeResponse”);
JSONObject结果=(JSONObject)geoCodeResponse.get(“结果”);
JSONArray addressArray=(JSONArray)result.get(“address_component”);
//打印出地址中的长名称
JSONObject地址=(JSONObject)addressArray.get(0);
String longName=(String)address.get(“long_name”);
System.out.println(longName)//图奇班加
但是,我建议您使用,以使您的生活更加轻松。


一旦选择了所需的元素,就可以构造所需的输出
JSONObject

,从中获取JSON库(必须编译源代码并确保类位于类路径上)并创建
JSONObject

JSONObject
只是一个包含更多映射、数组和对象的映射。由于嵌套太多,解析起来相当容易(但很麻烦)。让我们来看看如何解析第一个<代码>长名称>代码>。如果查看JSON源字符串,您将看到
long\u name
的位置在
locations/GeocodeResponse/result/address\u组件中。所以你可以这样做:

//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
//创建一个jsonObject
JSONObject JSONObject=新的JSONObject(“{\”位置\“…]”});
//运行一些getter,直到到达address\u组件
JSONArray位置=(JSONArray)jsonObject.get(“位置”);
JSONObject位置=(JSONObject)位置。获取(0);//获取第一个位置
JSONObject geoCodeResponse=(JSONObject)location.get(“geoCodeResponse”);
JSONObject结果=(JSONObject)geoCodeResponse.get(“结果”);
JSONArray addressArray=(JSONArray)result.get(“address_component”);
//打印出地址中的长名称
JSONObject地址=(JSONObject)addressArray.get(0);
String longName=(String)address.get(“long_name”);
System.out.println(longName)//图奇班加
但是,我建议您使用,以使您的生活更加轻松。


一旦选择了所需的元素,就可以构建所需的输出
JSONObject

您是否考虑过如何使用JSON.org?TMI中的一个JSON库?你想过滤掉东西,重写JSON还是其他什么?是的,您确实需要另一个库,而不是org.json中的概念验证库。即使您还不知道您需要它:)您是否考虑过使用JSON.org?TMI中的一个JSON库,以什么方式使用?你想过滤掉东西,重写JSON还是其他什么?是的,您确实需要另一个库,而不是org.json中的概念验证库。即使您还不知道您需要它:)有一个在线JSON格式化程序()可以更清楚地显示您的结构。有一个在线JSON格式化程序()可以更清楚地显示您的结构。