Dmitry Danilau
06/01/2024, 10:21 AMjson.decodeFromString<Map<String, @Serializable(with = AnyValueSerializer::class) Any?>>(string)
Serializer
object AnyValueSerializer : KSerializer<Any?> {
private val delegateSerializer = JsonElement.serializer()
override val descriptor = delegateSerializer.descriptor
override fun serialize(encoder: Encoder, value: Any?) {
encoder.encodeSerializableValue(delegateSerializer, value.toJsonElement())
}
override fun deserialize(decoder: Decoder): Any? {
val jsonPrimitive = decoder.decodeSerializableValue(JsonPrimitive.serializer())
return jsonPrimitive.toAnyValue()
}
}
It is works correct on Android, bot on iOS I get the exception. I dunnot expect any Enum or smth similar, only primitives.
string that I want to decode
{ "userId": 30123 }
ephemient
06/01/2024, 3:07 PMjson.decodeFromString(MapSerializer(String.serializer(), AnyValueSerializer), string)
Dmitry Danilau
06/02/2024, 8:09 PM