使用Moshi将平面JSON解析为嵌套对象结构

使用Moshi将平面JSON解析为嵌套对象结构,json,moshi,Json,Moshi,我正在使用一个API,它返回几个JSON响应,这些响应之间有公共数据字段。我使用Moshi将响应反序列化为对象 例如,假设来自一个API方法调用的响应具有以下结构 class Book( val title: String, val genre: String, ... val authorName: String, val authorAge: Int, val authorCountry: String } class Article(

我正在使用一个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
}
另一个有这样的结构

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
}
我正在寻找一种解决方案,能够将公共字段(例如,author details)移动到一个单独的类中,并将其视为来自嵌套JSON结构,而从API接收到的实际JSON保持不变且仍然平坦

class Book(
    val title: String,
    val genre: String,
    ...
    val author: Author
}
我想这样做,以便我能够:

  • 在需要时将作者视为一个独立的实体,而不必 将
    书籍
    文章
    对象四处传递
  • 避免重复
    作者
    字段
  • 目前我能想到的解决方案有:

  • 使用中间类,如Moshi文档中的
    EventJson
    示例。 我希望避免这种情况,因为我的数据类非常大,而且 必须复制中间类中的所有字段
  • 书籍
    文章
    类作为
    作者
    的子类。我 我不喜欢这样,因为一本书不是作者,也因为它不会让人失望 我将作者视为一个独立的实体

  • 有什么建议吗?

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