[英]How to create kotlin data class for this network service?
我想知道在這種情況下你會采取什么方法來制作數據類,在這個 JSON 服務中
我在其他服務字段下有子類別。 subCategories 中的每個項目都有一個slug字段,該字段也是其他數據元素中的字段之一,例如數字貨幣、圖片、打印。 現在我的要求是我想根據用戶對 subCategories 項目的選擇來選擇合適的數據類。 如果用戶選擇了以下項目
{
"title": "電子マネー",
"slug": "digital-currency"
}
然后我應該能夠匹配slug字段,然后應該拿起數字貨幣數據元素
"digital-currency": {
"slug": "digital-currency",
"title": "電子マネー",
"_id": "7j6OzPKVzim7xvW8BvI8zV",
"isSub": true,
"parent": "other-services"
}
我怎樣才能為此制作數據類?
您可以通過...簡化您的代碼
data class NetworkResponse(
val otherServices: OtherServices,
val digitalCurrency: SubCategory,
val picture: SubCategory,
val print: SubCategory
) {
fun getUserSelectedCategory(slug : String) : SubCategory? {
return when (slug) {
"digital-currency" -> digitalCurrency
"picture" -> picture
"print" -> print
else -> null
}
}
}
data class OtherServices(val subCategory: List<SubCategory>)
data class SubCategory(val title: String, val slug: String)
下面是我的解決方案,如果我理解正確,它只不過是在異構列表中查找給定類型的對象。 這里的DigitalCurrency 、 Picture 、 Print 、寵物用品……等等,都是異類。 要選擇此項中的任何一項,您使用slug字段作為標識符,您必須具有映射機制以使用給定的 json 結構為給定類型選擇正確的數據對象。
然而,每當在后端添加新數據元素時,我的解決方案都會添加 WHEN 條件。 我相信,根據這里提出的要求和 Json 結構,這不能推廣到任何擴展,它可以映射到適當的數據類,而無需在未來對代碼進行任何額外的更改。
如果您認為 Data 類可以以不需要任何代碼更改來容納新添加的數據的方式構造,請告訴我。
data class NetworkResponse(
val otherServices: OtherServices,
val digitalCurrency: DigitalCurrency,
val picture: Picture,
val print: Print
) {
fun getUserSelectedCategory(slug : String) : BaseClass {
when (slug) {
"digital-currency" -> {
return digitalCurrency
}
"picture" -> {
return picture
}
"print" -> {
return print
}
}
}
}
data class OtherServices(val subCategory: List<SubCategory>) {
}
interface BaseClass
data class SubCategory(val title: String, val slug: String) : BaseClass
data class DigitalCurrency(val title: String, val slug: String) : BaseClass
data class Picture(val title: String, val slug: String) : BaseClass
data class Print(val title: String, val slug: String) : BaseClass
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.