简化POJO以供Gson使用

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

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

  1. {
  2. "authors": [
  3. {
  4. "author": {
  5. "name": "Foo Bar"
  6. }
  7. },
  8. {
  9. "author": {
  10. "name": "Bar Foo"
  11. }
  12. }
  13. ]
  14. }

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

  1. public class Response {
  2. @SerializedName("authors")
  3. private List<AuthorsItem> authors;
  4. }
  5. class AuthorsItem {
  6. @SerializedName("author")
  7. private Author author;
  8. }
  9. class Author {
  10. @SerializedName("name")
  11. private String name;
  12. }

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

4bbkushb

4bbkushb1#

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

  1. class Author {
  2. @SerializedName("name")
  3. private String name;
  4. }

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

  1. [
  2. {
  3. "name": "Foo Bar"
  4. },
  5. {
  6. "name": "Bar Foo"
  7. }
  8. ]

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

展开查看全部

相关问题