Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何反序列化此JSON_Java_Android_Json - Fatal编程技术网

Java 如何反序列化此JSON

Java 如何反序列化此JSON,java,android,json,Java,Android,Json,这是我想要解析的JSON数据,但在反序列化方面还是新手,我想从这个JSON数据中获得以下属性: 1.机场代码 2.Latutude 3.经度 这是包含两个机场列表的JSON { "AirportResource": { "Airports": { "Airport": [{ "AirportCode": "AAL", "Position": {

这是我想要解析的JSON数据,但在反序列化方面还是新手,我想从这个JSON数据中获得以下属性:

1.机场代码

2.Latutude

3.经度

这是包含两个机场列表的JSON

{
    "AirportResource": {
        "Airports": {
            "Airport": [{
                "AirportCode": "AAL",
                "Position": {
                    "Coordinate": {
                        "Latitude": 57.09305556,
                        "Longitude": 9.85
                    }
                },
                "CityCode": "AAL",
                "CountryCode": "DK",
                "LocationType": "Airport",
                "Names": {
                    "Name": [{
                        "@LanguageCode": "xx",
                        "$": "Aalborg"
                    }, {
                        "@LanguageCode": "de",
                        "$": "Aalborg"
                    }, {
                        "@LanguageCode": "ru",
                        "$": "Ольборг"
                    }, {
                        "@LanguageCode": "pt",
                        "$": "Aalborg"
                    }, {
                        "@LanguageCode": "jp",
                        "$": "オールボア"
                    }, {
                        "@LanguageCode": "kr",
                        "$": "올보르그"
                    }, {
                        "@LanguageCode": "en",
                        "$": "Aalborg"
                    }, {
                        "@LanguageCode": "it",
                        "$": "Aalborg"
                    }, {
                        "@LanguageCode": "fr",
                        "$": "Aalborg"
                    }, {
                        "@LanguageCode": "es",
                        "$": "Aalborg"
                    }, {
                        "@LanguageCode": "ka",
                        "$": "奧爾堡"
                    }, {
                        "@LanguageCode": "pl",
                        "$": "Aalbork"
                    }, {
                        "@LanguageCode": "mi",
                        "$": "奥尔堡"
                    }]
                },
                "UtcOffset": 2,
                "TimeZoneId": "Europe\/Copenhagen"
            }, {
                "AirportCode": "AAR",
                "Position": {
                    "Coordinate": {
                        "Latitude": 56.30388889,
                        "Longitude": 10.62
                    }
                },
                "CityCode": "AAR",
                "CountryCode": "DK",
                "LocationType": "Airport",
                "Names": {
                    "Name": [{
                        "@LanguageCode": "xx",
                        "$": "Aarhus"
                    }, {
                        "@LanguageCode": "en",
                        "$": "Aarhus"
                    }, {
                        "@LanguageCode": "de",
                        "$": "Aarhus"
                    }, {
                        "@LanguageCode": "it",
                        "$": "Aarhus"
                    }, {
                        "@LanguageCode": "fr",
                        "$": "Aarhus"
                    }, {
                        "@LanguageCode": "es",
                        "$": "Aarhus"
                    }]
                },
                "UtcOffset": 2,
                "TimeZoneId": "Europe\/Copenhagen"
            }]
        },
        "Meta": {
            "@Version": "1.0.0",
            "Link": [{
                "@Href": "https:\/\/api.lufthansa.com\/v1\/references\/airports\/?limit=2&LHoperated=0&offset=0",
                "@Rel": "self"
            }, {
                "@Href": "https:\/\/api.lufthansa.com\/v1\/references\/airports\/?limit=2&LHoperated=0&offset=2",
                "@Rel": "next"
            }, {
                "@Href": "https:\/\/api.lufthansa.com\/v1\/references\/airports\/?limit=2&LHoperated=0&offset=1260",
                "@Rel": "last"
            }, {
                "@Href": "https:\/\/api.lufthansa.com\/v1\/references\/cities\/{cityCode}",
                "@Rel": "related"
            }, {
                "@Href": "https:\/\/api.lufthansa.com\/v1\/references\/countries\/{countryCode}",
                "@Rel": "related"
            }],
            "TotalCount": 1261
        }
    }
}
然后我的Javacode: 编辑:

private void parseJson(String  result)
    {
        try {
            if (result!=null) {
JSONObject obj = new JSONObject(result).getJSONObject("AirportResource").getJSONObject("Airports");
                JSONArray arr = obj.getJSONArray("Airport");
                for (int i = 0; i < arr.length(); i++)
                {
                    String AirportCode = arr.getJSONObject(i).getString("AAL");
                    String Latitude = arr.getJSONObject(i).getJSONObject("Position").getJSONObject("Coordinate").getString("Latitude");
                    String Longitude =  arr.getJSONObject(i).getJSONObject("Position").getJSONObject("Coordinate").getString("Longitude");
                    System.out.println("Airport : " + AirportCode + " Latitude:  " + Latitude+
                            " Longitude : " + Longitude );
                }

            }
            else{
                Toast.makeText(MainActivity.this,Config.POOR_NETWORK_CONNECTION, Toast.LENGTH_LONG).show();

            }
        }
        catch (JSONException r){
            System.out.println("ERROR PROB : "+  r);

        }
    }

如何解析这种JSON类型的数据?

您没有使用Airports对象。在Airports内部对象是Airport数组,您可以直接访问它。因此抛出错误

JSONObject obj2 = obj.getJSONObject("Airports");
现在从obj获取Json数组

JsonArray jsonarray= obj2.getJsonArray("Airport");
现在就在jsonarray的长度上使用for循环。

我建议使用它来正确查看和格式化JSON

这就是结果

从这里你可以很容易地解决你的问题

JSONObject AirportResource= obj.getJSONObject("AirportResource");
JsonArray AirPorts= AirportResource.getJSONObject("Airports");
JsonArray jsonarray= AirPorts.getJsonArray("Airport");

      for (int i = 0; i < jsonarray.length(); i++) {
        JSONObject obj= AirportResource.get(i); do sth with it
        obj.getString("key"); //do sth with it
       }
JSONObject AirportResource=obj.getJSONObject(“AirportResource”);
JsonArray AirPorts=AirportResource.getJSONObject(“机场”);
JsonArray JsonArray=AirPorts.getJsonArray(“Airport”);
for(int i=0;i
这将有望让您开始学习

private static void parseJson(JSONObject object) throws JSONException {
    if (object!=null) {
        JSONObject airportResource = object.getJSONObject("AirportResource");
        JSONObject airports = airportResource.getJSONObject("Airports");
        JSONArray airportArray = airports.getJSONArray("Airport");
        
        for (int i = 0 ; i < airportArray.length(); i++) {
            JSONObject airport = (JSONObject) airportArray.get(i);

            //System.out.println(airport);
            
            System.out.println("CityCode: " + airport.getString("CityCode"));
        }

    }
    else{
        //null

    }
}
private static void parseJson(JSONObject对象)抛出JSONException{
if(对象!=null){
JSONObject airportResource=object.getJSONObject(“airportResource”);
JSONObject airports=airportResource.getJSONObject(“机场”);
JSONArray airportArray=airports.getJSONArray(“机场”);
对于(int i=0;i
输出将是:

城市代码:AAL

城市代码:AAR


您似乎忘记了代码中的
Airports
对象
AirportResource(object)->Airports(object)->Airport(array)
@xander,请帮助我编辑我建议您为上面的JSON创建POJO,并使用诸如Gson之类的库来解析它。您可以排除JSON字符串中的无关数据。然后解析将像
gson.fromJson(json,AirportResource.class)一样简单。如果记录
结果
您会得到什么?请尝试
System.out.println(result)
您得到了什么?这更多的是一个评论而不是一个答案。您好,请尝试将我的代码编辑为您的答案编辑它。我想,Op应该自己尝试编码。您好,我已经将我的代码编辑为
JSONObject obj=new JSONObject(result)。getJSONObject(“AirportResource”)。getJSONObject(“Airports”)不要只是复制和粘贴代码。想想这个解。如果你不知道代码要做什么,你就永远不会正确编码。但是代码中有一些错误。我会给你一个答案。这和他在问题中编辑的代码有什么不同?另外,
JsonArray机场
的类型应为
JSONObject
,但我想这是一个复制错误。:)我以为他对JSON结构不太了解,我又看了一遍问题并更新了答案。谢谢您的反馈。@xander:)
private static void parseJson(JSONObject object) throws JSONException {
    if (object!=null) {
        JSONObject airportResource = object.getJSONObject("AirportResource");
        JSONObject airports = airportResource.getJSONObject("Airports");
        JSONArray airportArray = airports.getJSONArray("Airport");
        
        for (int i = 0 ; i < airportArray.length(); i++) {
            JSONObject airport = (JSONObject) airportArray.get(i);

            //System.out.println(airport);
            
            System.out.println("CityCode: " + airport.getString("CityCode"));
        }

    }
    else{
        //null

    }
}