【发布时间】:2020-08-19 17:18:12
【问题描述】:
我目前正在编写一个从 openweathermaps api 提取天气信息的程序。它返回一个 JSON 字符串,如下所示:
{"coord":{"lon":-95.94,"lat":41.26},"weather":[{"id":500,"main":"Rain","description":"light
rain","icon":"10n"}],"base":"stations","main": ...more json
我有下面这个方法,它将字符串写入 .json 并允许我从中获取值。
public String readJSON() {
JSONParser parse = new JSONParser();
String ret = "";
try {
FileReader reader = new FileReader("C:\\Users\\mattm\\Desktop\\Java Libs\\JSON.json");
Object obj = parse.parse(reader);
JSONObject Jobj = (JSONObject) obj;
System.out.println(Jobj.get("weather"));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println(ret);
return ret;
}
问题是它只允许我获取外部值,例如"coord" 和"weather"。所以目前因为我有System.out.println(Jobj.get("weather"));,它将返回[{"icon":"10n","description":"light rain","main":"Rain","id":500}],但我想实际获取其中的值,例如description 值和main 值。我对 JSON 的工作不多,所以我可能缺少一些明显的东西。关于我将如何做到这一点的任何想法?
【问题讨论】:
-
您可以使用
JsonPath或Rest Assured,后者使用gson path。两者都是读取 JSON 文件的好工具。您还可以创建代表 JSON 的 POJO 类。很酷的东西 -
@souvikbachhar 回答的将 GSON 与 POJO 结合使用将是更好的选择。
标签: java json api-design