如果我想反序列化以下 JSON 格式,我的 POJO 声明应该是什么:
{
"id":2,
"content":"skfdjhsfjhsfjkshdkjfhskdjf",
"created_at":"2012-11-14T00:10:59Z",
"feeds":
[
{
"feed":{"name":"twitter"}
}
]
}
目前我的 POJO 看起来像这样:
Broadcast.java - 最外面的对象
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;
}
}
最佳答案
私有(private)供稿 feed[];
应该是
私有(private) Feeds[] feeds;
。
实际上,[]
的位置并不重要,但建议将其放置在类型旁边,因为这样可以更清晰地阅读。这里的问题是变量名称不正确。
另外,如果你仔细看看:
"feeds":
[
{
"feed":{"name":"twitter"}
}
]
你会注意到 feeds
确实是一个数组,但是 "feed":{"name":"twitter"}
代表一个变量 (feeds
)持有键值对({"name":"twitter"}
),因此您的 Feeds
类应如下所示:
class Feeds {
private Map<String, String> feed;
public Feeds() {}
public String getName() {
return feed.get("name");
}
}
关于java - 使用GSON反序列化子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13544139/