在Java中从JSON响应中获取字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Java中从JSON响应中获取字符串相关的知识,希望对你有一定的参考价值。

无法弄清楚如何获取JSON响应字符串。从OpenWeatherMap API(https://samples.openweathermap.org/data/2.5/forecast?id=524901&appid=b6907d289e10d714a6e88b30761fae22)想获得第一个temp_min和temp_max。

我试图在JSON格式化程序中发布JSON响应并在逻辑上进行检查,但这对我没什么帮助。在整个谷歌尝试不同的解决方案。

我身边的最后一次尝试是这样的:

JSONObject jsonObject = new JSONObject(response);
JSONArray array = jsonObject.getJSONArray("list");
JSONObject firstObject = (JSONObject)array.get(0);
String tempmax = firstObject.getJSONObject("main").getString("temp_max");
String tempmin = firstObject.getJSONObject("main").getString("temp_min");

从以下API响应中,我想要接收temp_min和temp_max:

{  
   "cod":"200",
   "message":0.0032,
   "cnt":36,
   "list":[  
      {  
         "dt":1487246400,
         "main":{  
            "temp":286.67,
            "temp_min":281.556,
            "temp_max":286.67,
            "pressure":972.73,
            "sea_level":1046.46,
            "grnd_level":972.73,
            "humidity":75,
            "temp_kf":5.11
         },
         "weather":[  ],
         "clouds":{  },
         "wind":{  },
         "sys":{  },
         "dt_txt":"2017-02-16 12:00:00"
      },
[..]

我希望从API响应中获取temp_min和temp_max值,但此刻它只是空的。

答案

我刚刚使用最新版本的this库检查了你的代码。我从本地文件加载了json内容,我不得不改变你读取温度值的方式:

    public static void main(String[] args) throws IOException {
        String collect = Files.lines(Paths.get("src/main/resources/waether.json")).collect(Collectors.joining());

        JSONObject jsonObject = new JSONObject(collect);
        JSONArray array = jsonObject.getJSONArray("list");
        JSONObject firstObject = (JSONObject)array.get(0);
        double tempmax = firstObject.getJSONObject("main").getDouble("temp_max");
        double tempmin = firstObject.getJSONObject("main").getDouble("temp_min");

        System.out.println("Temp min " + tempmin);
        System.out.println("Temp max " + tempmax);
    }

输出是:

Temp min 259.086
Temp max 261.45

如你所见,我必须使用getDouble方法,因为这些值不是json字符串 - 它们是数字。我不确定您使用的是哪个版本的库,但最新版本可以使用。

另一答案

非常感谢michalk和其他人的帮助。编辑michalk的答案,所以它符合我的项目,它解决了我遇到的问题。

以上是关于在Java中从JSON响应中获取字符串的主要内容,如果未能解决你的问题,请参考以下文章

在我的 laravel 应用程序中从我的 PHP API 获取 json 响应

如何在 Javascript 中从 Spring 获取 JSON 响应

Spring RestTemplate 响应中从 JSON 到 Java/POJO 的自定义映射

java中从服务器上获取的json字符串,怎么存map<integer object>中

我们如何在 Flutter 中从 JSON 对象中获取特定数据?

如何在Vapor 3中从JSON响应中保存父子关系