我正在尝试使用 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 支持嵌套对象,因此您只需在名为 result
的PostcodeData
类上定义一个名为 的字段,该字段与 JSON 数据中的result
对象具有相同的字段。 本文提供了一些可能会有所帮助的其他信息。