#android #json #kotlin
#Android #json #kotlin
Вопрос:
Я создаю один из объектов запроса json через класс «данные» kotlin. Я застрял на точке, где мне нужно создать массив строк JSON без ключей, как показано ниже:
"filters": {
"abc": [{
"key1": "exRKxYXS5uAjW8hTs",
"key2": ["Premium"]
}],
"genders": ["MALE", "FEMALE"],
"def": ["en", "fr"]
}
Здесь я застрял на genders и def jsonarrays, в которые я должен помещать только строки, но как мы можем создать его классы данных в kotlin. Пожалуйста, предложите.
Заранее спасибо.
Комментарии:
1. это недопустимый формат json
2. Genders — это тип списка<String> . То же самое относится к def и key2.
Ответ №1:
Использование jsonschema2pojo.com для автоматического создания правильных классов.
Класс ответа
class Response {
@SerializedName("filters")
@Expose
var filters: Filters? = null
}
Класс фильтров
class Filters {
@SerializedName("abc")
@Expose
var abc: List<Abc>? = null
@SerializedName("genders")
@Expose
var genders: List<String>? = null
@SerializedName("def")
@Expose
var def: List<String>? = null
}
Класс Abc
class Abc {
@SerializedName("key1")
@Expose
var key1: String? = null
@SerializedName("key2")
@Expose
var key2: List<String>? = null
}
Ответ №2:
Вы можете создать соответствующие классы данных следующим образом:
//Response data class
data class Response(
val filters: Filters?
)
//Filters data class
data class Filters(
val abc: Abc,
val genders: List<String> = emptyList(),
val def: List<String> = emptyList()
)
//Abc data class
data class Abc(
val key1: String?,
val key2: String?
)
Вам не нужно использовать @SerializedName, если вы сохраняете имена переменных такими же, как имя ключа.