#json #kotlin #serialization #kotlinx.serialization
Вопрос:
Существует пример класса со значением по умолчанию:
@Serializable
data class TestClass(
val obligatory: String,
val optional: Int = 0
)
Его можно правильно десериализовать из json, таких как: { "obligatory":"text", "optional":1 }
и { "obligatory":"text" }
.
В то же время результат его сериализации должен содержать атрибут «необязательно».
В результате сериализации:
Json.encodeToString(TestClass("text"))
Я ожидаю { "obligatory":"text", "optional":0 }
, однако теперь у меня есть { "obligatory":"text" }
.
Как я должен изменить свой код, чтобы достичь ожидаемого результата?
Ответ №1:
По умолчанию сериализация Kotlinx не кодирует значения по умолчанию. Я предполагаю, что это предполагает, что вы используете ту же модель данных на другой стороне.
Вы можете принудительно сериализовать значения по умолчанию при настройке сериализатора:
val json = Json { encodeDefaults = true }
json.encodeToString(TestClass("text"))