使用 Java 中的 JSON 对来自 API 的邮政编码数据



我正在尝试使用 postcodes.io API 来计算 2 个邮政编码之间的距离。我正处于只是提取数据,确认输入的阶段。到目前为止,我有这个:

import com.google.gson.Gson;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.Scanner;
class PostcodeData {
    private String status;
    private String postcode;
    private Float longitude;
    private Float latitude;
    @Override
    public String toString() {
        return "status: "+ status + "npostcode: " + postcode + "nlongitude: " + longitude + "nlatitude: " + latitude + "";
    }
}
public class GsonReadWebPage {
    public static void main(String[] args) throws IOException {
        Scanner pcFrom = new Scanner(System.in);
        System.out.println("From post code: ");
        String pcFromAns = pcFrom.nextLine();
        Scanner pcTo = new Scanner(System.in);
        System.out.println("To post code: ");
        String pcToAns = pcTo.nextLine();
        String url = "https://api.postcodes.io/postcodes/" + pcFromAns + "";
        try (InputStream is = new URL(url).openStream();
             Reader reader = new InputStreamReader(is, StandardCharsets.UTF_8)) {
            Gson gson = new Gson();
            PostcodeData pcd = gson.fromJson(reader, PostcodeData.class);

            System.out.println(pcd);
        }
    }
}

我目前坚持通过"响应"检索数据。示例响应为:

{"status":200,"result":{"postcode":"SW1A 2AA","quality":1,"eastings":530047,"northings":179951,"country":"England","nhs_ha":"London","longitude":-0.127695,"latitude":51.50354,"european_electoral_region":"London","primary_care_trust":"Westminster","region":"London","lsoa":"Westminster 018C","msoa":"Westminster 018","incode":"2AA","outcode":"SW1A","parliamentary_constituency":"Cities of London and Westminster","admin_district":"Westminster","parish":"Westminster, unparished area","admin_county":null,"admin_ward":"St James's","ced":null,"ccg":"NHS Central London (Westminster)","nuts":"Westminster","codes":{"admin_district":"E09000033","admin_county":"E99999999","admin_ward":"E05000644","parish":"E43000236","parliamentary_constituency":"E14000639","ccg":"E38000031","ced":"E99999999","nuts":"UKI32"}}}

我不明白如何处理嵌套的 JSON。任何指示都会很棒,谢谢。

Gson 支持嵌套对象,因此您只需在名为 resultPostcodeData类上定义一个名为 的字段,该字段与 JSON 数据中的result对象具有相同的字段。 本文提供了一些可能会有所帮助的其他信息。

最新更新