SauceNaoAPI/src/commonMain/kotlin/dev/inmo/SauceNaoAPI/utils/CommonMultivariantStringSerializer.kt

20 lines
781 B
Kotlin
Raw Normal View History

2020-12-02 08:32:26 +00:00
package dev.inmo.SauceNaoAPI.utils
2019-03-21 06:24:26 +00:00
2020-08-29 13:09:54 +00:00
import kotlinx.serialization.KSerializer
import kotlinx.serialization.Serializer
2020-08-13 05:17:11 +00:00
import kotlinx.serialization.builtins.ListSerializer
import kotlinx.serialization.builtins.serializer
2020-08-22 17:00:07 +00:00
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.json.*
2019-03-21 06:24:26 +00:00
@Serializer(String::class)
2020-08-13 05:17:11 +00:00
object CommonMultivariantStringSerializer : KSerializer<String> by String.serializer() {
2019-03-21 06:24:26 +00:00
override fun deserialize(decoder: Decoder): String {
2020-08-22 17:00:07 +00:00
return when (val parsed = JsonElement.serializer().deserialize(decoder)) {
is JsonPrimitive -> parsed.content
is JsonArray -> parsed.joinToString { it.jsonPrimitive.content }
else -> error("Unexpected answer object has been received: $parsed")
2019-03-21 06:24:26 +00:00
}
}
}