简化POJO以供Gson使用

jmo0nnb3  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(133)

我有一个包含以下部分的JSON:

{
  "authors": [
    {
      "author": {
        "name": "Foo Bar"
      }
    },
    {
      "author": {
        "name": "Bar Foo"
      }
    }
  ]
}

它可以很容易地Map到以下DTO:

public class Response {

    @SerializedName("authors")
    private List<AuthorsItem> authors;
}

class AuthorsItem {

    @SerializedName("author")
    private Author author;
}

class Author {

    @SerializedName("name")
    private String name;
}

为简洁起见,省略了getter/setter
有没有办法避免这样一个复杂的结构,例如List<Author> authors?可以通过编写一个实现JsonDeserializer的类来实现,但这是相当冗长的。

4bbkushb

4bbkushb1#

如果我没理解错的话,你只能定义Author类,并且只能从列表中访问数据,对吗?(可能是作为控制器类中的一个方法)
示例:void saveAuthors(List<Author> authors) {}

class Author {

    @SerializedName("name")
    private String name;
}

那么您的JSON就必须按如下所示进行结构化。

[
  {
     "name": "Foo Bar"
  },
  {
     "name": "Bar Foo"
  }
]

反序列化时,可以采用正确标识列表的方式进行反序列化。
有关详细信息,请参阅本教程:How to Serialize Deserialize List of Objects in Java? Java Serialization Example

相关问题