使用GSON反序列化子节点

时间:2012-11-24 18:19:11

标签: java json gson

如果我想反序列化以下JSON格式,我的POJO声明应该是什么:

{
"id":2,
"content":"skfdjhsfjhsfjkshdkjfhskdjf",
"created_at":"2012-11-14T00:10:59Z",
"feeds":
 [
   {
     "feed":{"name":"twitter"}
   } 
 ]
}

目前我的POJO看起来像这样:

Broadcast.java - outtermost对象

public class Broadcast {

    private String content;
    private String created_at;
    private Feeds feed[];
    private int id;

    public Broadcast() { }

    public int getId() { return id; }

    public String getContent() { return content; }

    public String getCreatedAt() { return created_at; }    
}

Feed.java - Broadcast的内部子节点,它可以是一个数组,每个feed都有一个name属性:

public class Feeds {

    private String name;

    public Feeds() {}

    public String getName() {
        return name;
    }   
}

1 个答案:

答案 0 :(得分:1)

private Feeds feed[];

应该是

private Feeds[] feeds;

实际上,[]的放置并不重要,但建议将其放在类型旁边,因为它更清晰易读。这里的问题是变量名称不正确。


另外,如果你仔细看看:

 "feeds":
  [
      {
          "feed":{"name":"twitter"}
      } 
  ]

您会注意到feeds确实是一个数组,但"feed":{"name":"twitter"}代表一个变量(feed),其中包含一个键值对({"name":"twitter"}),因此您的Feeds类看起来应该是这样的:

class Feeds {
    private Map<String, String> feed;

    public Feeds() {}

    public String getName() {
        return feed.get("name");
    }
}