【发布时间】:2016-03-25 02:09:56
【问题描述】:
使用它作为参考,我已经描述了我的 Json 数据的结构,并且可以根据需要获取信息,直到我得到嵌套记录和数组。 Parsing a complex Json Object using GSON in Java
但是,我的 JSON 数据嵌套了多次。例如;
{
"meetings": [
{
"meetingName": "GaryVon",
"location": "USA",
"meetingType": "P",
"meetingDate": "2016-03-25",
"weatherCondition": "FINE",
"showCode": {
"meetingCode": "A",
"scheduledType": "R"
},
"venueType": "ANI",
"showPools": [
{
"showProduct": "GaryVon",
"showStatus": "Open",
}
]
}
]
}
我有我的包装器和描述 json 数据格式的类。每个类都在一个新的 java 文件中。
public class meetingContainer {
public List<meetings> meetings;
}
顶级课程
public class meetings {
private String meetingName;
private String location;
private String meetingType;
private String meetingDate;
private String weatherCondition;
private ShowCode showCode;
private String venueType;
private ShowPools[] showPools;
public String getMeetingName() { return meetingName; }
public String getLocation() { return location; }
public String getMeetingType() { return meetingType; }
public String getMeetingDate() { return meetingDate; }
public String getWeatherCondition() { return weatherCondition; }
public ShowCode getShowCode() { return showCode; }
public String getVenueType() { return venueType; }
public ShowPools[] getShowPools() { return showPools; }
}
二级课程
public class ShowCode {
private String meetingCode;
private String scheduledType;
public String getMeetingCode() { return meetingCode; }
public String getScheduledType() { return scheduledType; }
}
二级课程
public class ShowPools {
private String showProduct;
private String showStatus;
public String getShowProduct() { return showProduct; }
public String getShowStatus() { return showStatus; }
}
然后我尝试解析它并获取可以正常工作的数据,直到我进入嵌套数组/记录
Gson g = new Gson();
meetingContainer mc = g.fromJson(jsonMeetingsString, meetingContainer.class);
for(meetings m: mc.meetings){
System.out.println(m.getMeetingName()); //Result = "GaryVon"
System.out.println(m.getLocation()); //Result = "USA"
System.out.println(m.getmeetingType()); //Result = "P"
System.out.println(m.getShowCode()); //Result = "packagename.ShowCode@210366b4"
}
我的问题是如何声明嵌套数组/记录,然后从不同的类调用这些方法,即调用 showcode 和 showpools 中的方法。另一个帖子没有说如何。对不起,如果这是一个简单的答案,因为我是 java 新手。
【问题讨论】:
-
我不明白你的问题,我觉得每件事都很好。你想做什么?
-
我希望能够获取所有值并将它们最终存储在数据库中。我可以使用 m.getMeetingName() 来获取会议名称,但是我无法获取 ShowCodes(meetingCodes、scheduledTypes)。如果我尝试使用 m.getShowCode(),它会返回类似 packagename.ShowCode@210366b4 的结果
-
它返回一个 ShowCode 实例,ShowCode 没有 toString 方法,这就是为什么你会看到这个奇怪的字符串。试试 m.getShowCode().getMeetingCode()
-
哇,谢谢。哈哈,很简单,而且很有效。我还在学习 java 并尝试过 m.getShowCode.getMeetingCode() ,但由于失败了,我想也许我无法从我的主课中调用它。
-
我是否正确声明了 showPools?当我使用
m.getExoticPools().getshowProduct()时出现错误 'Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous tree type:' Isprivate ShowPools[] showPools;错误数据类型?
标签: java json gson deserialization