java - 使用GSON反序列化子节点

标签 java json gson

如果我想反序列化以下 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/

相关文章:

java - 如何毫不费力地分发matrix-toolkits-java(MTJ)?

java - 如何获取swing中的组件名称?

javascript - 从 web.config 变量生成 JSON 文件

java - 将数组列表项连接到线程以及其他方式的最佳方法

c# - 查询反序列化的 JSON 对象

node.js - 读取 Google 响应 JSON 文件

android - 改造:子列表的 GSON 自定义反序列化

android - 重复输入错误 - 带有 GSON 的 JSONPath

java - 改造预期为 BEGIN_OBJECT,但为 BEGIN_ARRAY

java - 没有任何实现和变量的抽象类是有效的接口(interface)吗?