Я изо всех сил пытаюсь понять, как разобрать пустой объект {}
с экспериментальной библиотекой kotlinx.serialization
. Сложность возникает, когда на самом деле ответ API может быть одним из:
{
"id": "ABC1",
"status": "A_STATUS"
}
или
{}
Структура данных, которую я использовал в качестве сериализатора:
data class Thing(val id: String = "", val status: String = "")
Это аннотировано @kotlinx.serialization.Serializable
и используется в клиентской библиотеке API для разделения между необработанным ответом API и моделью данных. Значения по умолчанию сообщают библиотеке сериализации, что поле является необязательным, и заменяет подход @Optional
до Kotlin 1.3.30.
Наконец, парсер kotlinx.serialization.json.Json
, который я использую, имеет конфигурацию, примененную с использованием шаблона nonstrict
.
Как определить сериализатор, который может анализировать как пустой объект, так и ожидаемый тип данных с помощью kotlinx.serialization
? Нужно ли мне писать свой KSerialiser
или есть конфигурация, которую мне не хватает. В идеале пустой объект должен игнорироваться / анализироваться как null
?
Ошибка, которую я получаю при разборе пустого объекта с моим Thing
классом данных:
Field 'id' is required, but it was missing