如何解决如何使用moshi将房间关系变成嵌套的json?
@Entity
data class Dog(
@PrimaryKey val dogId: Long,val dogOwnerId: Long,val name: String,val cuteness: Int,val barkVolume: Int,val breed: String
)
@Entity
data class Owner(@PrimaryKey val ownerId: Long,val name: String)
data class OwnerWithDogs(
@Embedded val owner: Owner,@Relation(
parentColumn = "ownerId",entityColumn = "dogOwnerId"
)
val dogs: List<Dog>
)
然后 Dao 提供新定义的关系
@Query("SELECT * FROM Owner")
fun getDogsAndOwners(): List<OwnerWithDogs>
现在为了将 OwnerWithDogs 转换为 json,我在关系模型和 POJO 中声明了 moshi 适配器:
@JsonClass(generateAdapter = true) //<---
data class OwnerWithDogs(
@Embedded val owner: Owner,entityColumn = "dogOwnerId"
)
val dogs: List<Dog>
)
@Entity
@JsonClass(generateAdapter = true) //<---
data class Dog(
@PrimaryKey val dogId: Long,val breed: String
)
@Entity
@JsonClass(generateAdapter = true) //<---
data class Owner(@PrimaryKey val ownerId: Long,val name: String)
当 DAO 返回一个列表时,我必须声明一个自定义适配器来创建 json
val type: ParameterizedType = Types.newParameterizedType(List::class.java,OwnerWithDogs::class.java)
val adapter: JsonAdapter<List<OwnerWithDogs>> = moshi.adapter(type)
现在我获取关系并将其转换为 json:
val ownerWithDogs: List<OwnerWithDogs> = dao.getDogsAndOwners()
val json = adapter.toJson(ownerWithDogs)
输出如下:
[
"owner": {...},"dogs": [....]
]
我怎样才能输出这样的房间关系?:
[
"owner": {
"dogs": [...],...
}
]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。