Как сериализовать вложенный класс с помощью kotlinx.serialization
Мне нужно получить свойство breadType из класса Sandwich. У меня есть 2 сериализуемых класса:
@Serializable
class MyFood {
var name: String? = null
var price: Int? = null
var sand: Sandwich? = null
}
@Serializable
class Sandwich{
var breadType: String? = null
}
И этот JSON:
"MyFood": {
"name": "Sandwich double",
"price": 100.00,
"breadType": 100.00
}
Я получаю исключение JsonUnknownKeyException:
"Strict JSON encountered unknown key: breadType\nYou can disable strict mode to skip unknown keys"
Что я делаю не так пожалуйста!?
1 ответ
Если вы используете дооснащение:
Используйте JsonConfiguration(strictMode = false) для модернизации фабрики преобразователей.
// your retrofit builder
.addConverterFactory(
Json(
JsonConfiguration(strictMode = false)
).asConverterFactory(MediaType.get("application/json"))
)
Другими словами, вы должны использовать Json.nonstrict.parse()
вместо того Json.parse()
Или мы можем передать конструктор:
serializer = KotlinxSerializer(Json.nonstrict)
Отредактировано:
В соответствии с вашим json ваш класс должен быть таким:
Serializable
class MyFood {
var name: String? = null
var price: Int? = null
var breadType: double? = null
}
Это будет работать, но если вы хотите использовать класс Sandwich, ваш json должен быть таким:
"MyFood": {
"name": "Sandwich double",
"price": 100.00,
"sand": {
"breadType":100.00
}
}