[英]Deserialize a complex Json Object using GSON in Java
以此為參考,我描述了我的Json數據的結構,並可以根據需要獲取信息,直到我嵌套記錄和數組。 在Java中使用GSON解析復雜的Json對象
但是我的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.getShowCode()
這將返回ShowCode類型的引用,以使用getter訪問內部值,例如:
m.getShowCode().getMeetingCode()
您應該為showPools使用列表
private List<ShowPools> showPools;
您提供的JSON字符串無效。 它有一個額外的,
-
{
"showProduct": "GaryVon",
"showStatus": "Open",
^
您在注釋中提出的問題的答案: m.getShowCode().getShowProduct()
無效,因為showCode節點只有兩個屬性MeetingCode和ScheduledType 。
下面的代碼列出了JSON的所有值。 讓我知道是否不能解決您的問題
Gson g = new Gson();
meetingContainer mc = g.fromJson(jsonMeetingsString,
meetingContainer.class);
for (meetings m : mc.meetings) {
System.out.println("meetingName: " + m.getMeetingName());
System.out.println("location: "+ m.getLocation());
System.out.println("meetingType: "+ m.getMeetingType());
System.out.println("meetingDate: "+ m.getMeetingDate());
System.out.println("weatherConditio: "+ m.getWeatherCondition());
System.out.println("showCode->meetingCode: "+ m.getShowCode().getMeetingCode());
System.out.println("showCode->scheduledType: "+ m.getShowCode().getScheduledType());
System.out.println("venueType: "+ m.getVenueType());
for(ShowPools showPool : m.getShowPools()){
System.out.println("showPools->showProduct: "+ showPool.getShowProduct());
System.out.println("showPools->showStatus: "+ showPool.getShowStatus());
}
}
輸出:
meetingName: GaryVon
location: USA
meetingType: P
meetingDate: 2016-03-25
weatherConditio: FINE
showCode->meetingCode: A
showCode->scheduledType: R
venueType: ANI
showPools->showProduct: GaryVon
showPools->showStatus: Open
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.