fkrauthan
10/01/2020, 2:12 AMgildor
10/01/2020, 3:02 AMfkrauthan
10/01/2020, 4:32 AMOptional<T?>
decide to omit a field? or will it always write that field?gildor
10/01/2020, 5:04 AMserialize/encode
manually, so you can just do not write anyting, never tried thoughfkrauthan
10/01/2020, 5:47 AMclass ValueSerializer <T> (private val dataSerializer: KSerializer<T>) : KSerializer<Value<T>> {
override val descriptor: SerialDescriptor = dataSerializer.descriptor
override fun serialize(encoder: Encoder, value: Value<T>) {
if (value.isSet) {
if (value.value == null) {
encoder.encodeNull()
} else {
dataSerializer.serialize(encoder, value.value!!)
}
}
}
override fun deserialize(decoder: Decoder) = TODO("Not implemented!")
}
But when running
val testObject = TestClass()
testObject.value1.value = "Hello World"
testObject.value3.value = null
println(Json.encodeToString(testObject))
The output is {"value1":"Hello World","value2":,"value3":null}
gildor
10/01/2020, 5:57 AMfkrauthan
10/01/2020, 5:59 AMgildor
10/01/2020, 5:59 AMgildor
10/01/2020, 5:59 AMgildor
10/01/2020, 6:00 AMgildor
10/01/2020, 6:00 AMfkrauthan
10/01/2020, 6:25 AMfkrauthan
10/01/2020, 6:25 AMfkrauthan
10/01/2020, 6:26 AMkqr
10/01/2020, 7:42 AMVampire
10/01/2020, 7:47 AMfkrauthan
10/01/2020, 5:23 PMundefined
and null
that you can use for that.