使用Moshi

时间:2018-09-09 14:53:35

标签: json moshi

我正在使用一个API,该API返回多个JSON响应,它们之间具有公共数据字段。我正在使用Moshi将响应反序列化为对象。

例如说一个API方法调用的响应具有这种结构

class Book(
    val title: String,
    val genre: String,
    ...
    val authorName: String,
    val authorAge: Int,
    val authorCountry: String
}

另一个具有这种结构

class Article(
    val title: String,
    val subject: String,
    ...
    val authorName: String,
    val authorAge: Int,
    val authorCountry: String
}

我正在寻找一种解决方案,以便能够将公共字段(例如,作者详细信息)移动到一个单独的类中,并将其视为好像来自嵌套的JSON结构,同时接收到实际的JSON来自API的内容保持不变,并且仍然保持不变。

class Book(
    val title: String,
    val genre: String,
    ...
    val author: Author
}

我想这样做,所以我可以:

  1. 在需要时将作者视为一个单独的实体,而不必 传递BookArticle对象
  2. 避免重复Author字段

我能想到的当前解决方案是:

  1. 使用中间类,例如Moshi文档中的EventJson示例。 我想避免这种情况,因为我的数据类很大,而且我 将必须复制中间类中的所有字段。
  2. 设置Book的{​​{1}}和Article类子类。一世 不喜欢这样,因为书不是作者,并且因为它不允许 我将作者视为一个单独的实体。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

我认为即使需要大量代码,EventJson方法也将最容易维护。