【问题标题】:JSON OpenWeatherMap API data into a StringJSON OpenWeatherMap API 数据转换成字符串
【发布时间】:2018-10-16 13:40:59
【问题描述】:

我想在屏幕上输出一个字符串,比如"Dublin is experiencing clouds today with a temperature of 15".

如何从这个 JSON 中定位 weather.main 和 temperature 并将其放入我的字符串中?

这是我用于定位 api 并返回 JSON 的代码。我是新手,所以任何帮助都将不胜感激!

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.core.Response;


@Path("/weather")
public class Weather {


@GET
@Path("/{param}")
    public Response GetCityInfo(@PathParam("param") String city) {

    String URL = "http://api.openweathermap.org/data/2.5/weather?q="+city+"&mode=JSON&APPID=cbb5da68f37d26059628449e068ce931";
    Client c = ClientBuilder.newClient();
    Response r = c.target(URL).request().get();
    return r;
    }

}

使用带有 URL http://localhost:49000/api/weather/dublin 的 Postman 会返回:

{
"coord": {
    "lon": -6.26,
    "lat": 53.35
},
"weather": [
    {
        "id": 803,
        "main": "Clouds",
        "description": "broken clouds",
        "icon": "04d"
    }
],
"base": "stations",
"main": {
    "temp": 287.71,
    "pressure": 1009,
    "humidity": 82,
    "temp_min": 287.15,
    "temp_max": 288.15
},
"visibility": 10000,
"wind": {
    "speed": 6.7,
    "deg": 220
},
"clouds": {
    "all": 75
},
"dt": 1539694800,
"sys": {
    "type": 1,
    "id": 5237,
    "message": 0.0019,
    "country": "IE",
    "sunrise": 1539672865,
    "sunset": 1539710737
},
"id": 2964574,
"name": "Dublin",
"cod": 200

}

【问题讨论】:

    标签: json rest api jersey


    【解决方案1】:

    尽管它是同一个Response 类,但实际上有两种不同的子类型,它们用于两种完全不同的情况。当您从 Client 收到 Response 时,您将收到 inbound 响应。您不能从资源方法返回入站 Response。您必须返回 出站 Response。您可以使用其中一种静态方法来创建它。请参阅API。例如,你可以这样做

     return Response.ok(entity).build();
    

    这会创建出站响应。从入站响应中,您需要提取数据。你可以用Response#readEntity(Class) 做到这一点。所以你可以做的是像

     Response r = c.target(URL).request().get();
     String data = r.readEntity(String.class);
     return Response.ok(data).build();
    

    【讨论】:

      猜你喜欢
      • 2020-07-01
      • 1970-01-01
      • 2018-11-12
      • 2013-10-26
      • 2019-10-29
      • 2018-01-16
      • 1970-01-01
      • 2018-02-15
      • 1970-01-01
      相关资源
      最近更新 更多