java - 我怎样才能反序列化这个JSON

标签 java android json

这是我想要解析的 JSON 数据,但在反序列化方面仍然是新手,我想从此 JSON 数据 获取以下属性:

1.机场代码

2.纬度

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
        }
    }
}

然后我的Java代码de: 编辑:

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);

        }
    }

我得到的异常是:

org.json.JSONException: No value for AirportResource

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

最佳答案

这希望能帮助您入门。

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

    }
}

输出将是:

CityCode: AAL

CityCode: AAR

关于java - 我怎样才能反序列化这个JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48564647/

相关文章:

java - 如何从单个类执行多个 JUnit 测试套件?

java - 如何传递信息,反对thymeleaf

android - 自定义适配器中的 butterknife View 支架模式

android - Picasso 不支持下载使用 https 协议(protocol)的图片吗

json - 为什么在接口(interface)中添加 func 会导致 json.Unmarshal 失败?

c# - 在序列化之前根据模式验证对象

java - 如何计算javafx文本区域中的行数

java - 如何将 Object[] 类型转换为用户定义的数组类型

android - 在 android 中读取原始音频并提取 SMPTE 时间码

json - 如何将数据从 CosmosDB 中的文档传输到 Azure SQL 数据库?