[英]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.