0
行,所以我有以下的Json POJO的:的Android科特林莫希定製的Json適配器
data class JCategory(
val id: Int,
val name: String,
val image: String?,
val color: String?,
val categories: List<JCategory>?,
val products: List<JProduct>?
)
,我想編寫一個海關解串器,因此最終的對象將是這樣的:
data class Category(
val id: Int,
val name: String,
val image: String?,
val color: String?,
val list: List<Any>
)
基本上,映射是:
JCategory -> Category
JProduct -> Prod1/Prod2
基於內部JProduct
一些值JCategory兩個列表將是聯合成1,其中將包含更多JCategory加PROD1/Prod2的。
這是根據Moshi在此適配器中映射數據的有效方法嗎?
@FromJson fun fromJson(category: JCategory): CategoryProduct {
val prods = category.products
val cats = category.categories
val list = mutableListOf<Any>()
if (prods != null && prods.size > 0) {
prods.forEach {
list.add(if (it.isMain == 1) {
P1(
...
)
} else {
P2(
...
)
})
}
}
if (cats != null && cats.size > 0){
cats.forEach {
list.add(fromJson(it))
}
}
return CategoryProduct(
category.id,
category.name,
category.image.emptyToNull(),
parsedColor,
category.parentId,
list
)
}
請注意,我有一個JCategory和相同對象的名單內, 所以我想適配器會自動解析這一點,但事實並非如此。所以我嘗試list.add(fromJson(it))
,它的工作。
所以我的問題是:
- 是
list.add(fromJson(it))
處理這樣的情況下正確的方法是什麼? - 如何根據其中的某些屬性將對象映射到另一個/ other? fromJson只能返回1種類型的轉換對象。