Создание массива строк Json без ключа с помощью класса данных в kotlin

#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, если вы сохраняете имена переменных такими же, как имя ключа.