java - Java中使用GSON反序列化复杂的Json对象

标签 java json gson deserialization

以此为引用,我描述了 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;
}

顶级类(class)

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; }
}

二级类(class)

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 类型的引用,要使用 getters 访问内部值,例如:

m.getShowCode().getMeetingCode()
<小时/>

您应该使用 showPools 列表

private List<ShowPools> showPools;

关于java - Java中使用GSON反序列化复杂的Json对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36212993/

相关文章:

java - HttpServletRequest 获取 JSON POST 数据

ios - [__NSCFNumber 长度] : unrecognized selector sent to instance UITableView

java - 使用 Gson 映射可选值

java - 如何使用 GSON 反序列化数据没有成员/参数名称的对象?

java - 反射不适用于 Android 发布的 apk。即使禁用了 proguard/minify

java - 自定义 Observable 与 Observable.create()?

java - 如何使用Android 12键键盘实现PIN INPUT风格的屏幕

java - 在自定义类中使用 Jackson 的 ObjectMapper

javascript - 解析对象的 JSON 数组 : undefined property

java - 无法解析符号 gson