从JSON读取Java

时间:2018-10-15 13:58:52

标签: java rest

我希望将我在Netbeans Java项目中使用的天气API中的天气转换为我自己的Maven API,这一切都很好,但是当我想将其分解为较小的可读性时,返回一个巨大的JSON响应文字。

我的代码当前正在返回:

  

{“ coord”:{“ lon”:-6.26,“ lat”:53.35},“ 天气”:[{“ id”:801,“ 主要“:”云“,”描述“:”很少   clouds“,” icon“:” 02d“}],” base“:” stations“,” 主要“:{” 温度“:285.59,”压力“: 1015,“湿度”:58,“温度最小值”:285.15,“温度最大值”:286.15},“可见度”:10000,“风”:{“速度”:3.6,“度”:80},“云”:{ “ all”:20},“ dt”:1539610200,“ sys”:{“ type”:1,“ id”:5237,“ message”:0.0027,“ country”:“ IE”,“ sunrise”:1539586357, “ sunset”:1539624469},“ id”:2964574,“ name”:“ Dublin”,“ cod”:200}

我希望它能够返回,主要在天气和温度方面也是如此。如果有人有任何想法请告诉我。附带代码。

public class WeatherInfo {
     public static String getWeather(String city) {
        String weather;
        String getUrl = "http://api.openweathermap.org/data/2.5/weather?q="+ city +"&appid=xxx";
        Client client = Client.create();
        WebResource target = client.resource(getUrl);

        ClientResponse response = target.get(ClientResponse.class);
        weather = response.getEntity(String.class);
        return weather;
}
}

2 个答案:

答案 0 :(得分:1)

我假设您希望从getWeather返回的值为{"main":"Clouds","temp":285.59} 这是一个解决方案- 在pom中添加jackson依赖

 <dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.8.7</version>
</dependency>

这是一种去除其他细节并仅返回main和temp的方法,您可以编辑此方法以添加更多字段。

private static String getLessWeather(String weatherJson) throws IOException {
  Map<String, Object> lessWeatherMap = new LinkedHashMap<String, Object>();
  Map<String,Object> weatherMap = new ObjectMapper().readValue(weatherJson, LinkedHashMap.class);
  String main = (String) ((LinkedHashMap)((ArrayList)weatherMap.get("weather")).get(0)).get("main");
  lessWeatherMap.put("main", main);
  Double temp = (Double)((LinkedHashMap)weatherMap.get("main")).get("temp");
  lessWeatherMap.put("temp", temp);
  return new ObjectMapper().writeValueAsString(lessWeatherMap);
}

答案 1 :(得分:0)

您需要使用一个库来解析JSON响应。这是一个带有出色示例和参考的SO问题:How to parse JSON in Java

用户SDekov的回答列出了三个不错的选择:

  • Google GSON
  • Org.JSON
  • 杰克逊