首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Java解析JSON双括号

用Java解析JSON双括号
EN

Stack Overflow用户
提问于 2019-02-17 15:17:40
回答 1查看 680关注 0票数 2

我遇到了一些麻烦,因为我在学习如何使用JSON simple解析json时遇到了障碍。

使自己简明扼要;

我正在尝试从一个url解析这段JSON。

代码语言:javascript
复制
"hourly": {

"summary": "Clear throughout the day.",

"icon": "clear-day",

"data": [

{

"time": 1550379600,

"summary": "Clear",

"icon": "clear-day",

"precipIntensity": 0,

"precipProbability": 0,

"temperature": 20.18,

"apparentTemperature": 14.31,

"dewPoint": 13.79,

"humidity": 0.76,

"pressure": 1024.47,

"windSpeed": 4.08,

"windGust": 5.25,

"windBearing": 30,

"cloudCover": 0.07,

"uvIndex": 0,

"visibility": 10,

"ozone": 342.67

}

因此,在使用json simple时,我就是这样解析这个JSON的

代码语言:javascript
复制
try{

String genreJson = IOUtils.toString(new URL(url));

JSONObject genreJsonObject = (JSONObject) JSONValue.parseWithException(genreJson);

//get the title

System.out.println(genreJsonObject.get("hourly")); //THIS WORKS

//System.out.println(genreJsonObject.get("visibility"));

//get the data

JSONArray genreArray = (JSONArray) genreJsonObject.get(0);

//get the first genre

//JSONObject firstGenre = (JSONObject) genreArray.get(0);

//System.out.println(firstGenre.get("data"));

}

catch (IOException | ParseException e){

e.printStackTrace();

}

因此,在调用System.out.println(genreJsonObject.get("hourly"));时,我得到了标题为"hourly“的方括号中的所有内容。我的意图是解析“每小时”括号中的数据,尽管我不知道如何解析标题括号中的标题。具体地说,我需要时间、precipProbability、precipIntensity和precipProbability (本例中没有这个属性)。

作为我第一次参加黑客马拉松的一部分,我对任何细节的缺失表示歉意,我现在正努力不想睡着。

我非常感谢任何人的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-17 15:41:50

这是用来描述你的json "data“部分的对象:

代码语言:javascript
复制
class Data {
  private Long time;
  private String summary;
  private String icon;
  private Double dewPoint;
  // add all the fields you need

  // add empty constructor + getters and setters
}

如果您想跳过"data“中一些您不关心的字段,请使用

代码语言:javascript
复制
@JsonIgnoreProperties(ignoreUnknown = true)
class Data{ 
   ...
}

您的父对象是“每小时”,因此:

代码语言:javascript
复制
class Hourly {
  private String summary;
  private String icon;
  private List<Data> data;

  // add all the fields you need

  // add empty constructor + getters and setters
}

此时,Java POJO类描述了Json数据,因此您可以将JSON映射到Java类。

要在Jackson中阅读,您将需要Json的字符串表示(没有任何URL部分),所以让我们假设您可以在一个名为"inputJsonString“的字符串中做到这一点。

与Jackson一起阅读这篇文章将非常简单:

代码语言:javascript
复制
ObjectMapper mapper = new ObjectMapper();
Hourly hourly = mapper.readValue(inputJsonString, Hourly.class);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54731025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档