【发布时间】:2020-03-18 08:19:13
【问题描述】:
我正在尝试使用 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 或 Jackson 可以解决您的要求,您是否要将 JSON 传递给 POJO,然后我可以粘贴示例代码行以供您参考,或者您是否想在响应时读取 JSON 元素是否保留为 JSON 本身?
-
您需要创建一个适合您的
JSON的POJO模型,或者只是将所有内容反序列化为Map。看看:Array of JSON Object to Java POJO