Tiago Nunes
02/12/2021, 12:11 PMJavier
02/12/2021, 12:12 PMTiago Nunes
02/12/2021, 12:15 PMTiago Nunes
02/12/2021, 12:15 PMTiago Nunes
02/12/2021, 12:18 PMJavier
02/12/2021, 12:19 PMJavier
02/12/2021, 12:19 PMJavier
02/12/2021, 12:20 PMJavier
02/12/2021, 12:20 PMJavier
02/12/2021, 12:20 PMTiago Nunes
02/12/2021, 12:23 PMJavier
02/12/2021, 12:24 PMTiago Nunes
02/12/2021, 12:25 PMTiago Nunes
02/12/2021, 12:40 PMobject FloatAsDecimalString : KSerializer<Float> {
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("Float", PrimitiveKind.STRING)
override fun serialize(encoder: Encoder, value: Float) =
encoder.encodeString(value.toString())
override fun deserialize(decoder: Decoder): Float =
decoder.decodeString().replace(",", ".").toFloat()
}
@Serializable
data class ExampleResponse(
val id: Long,
val someDecimal: Float,
)
Now, how do I apply the Serializer?Javier
02/12/2021, 12:41 PM@Serializable
data class ExampleResponse(
val id: Long,
@Serializable(with = FloatAsDecimalString::class) val someDecimal: Float,
)
Javier
02/12/2021, 12:41 PMTiago Nunes
02/12/2021, 12:56 PMJson.decodeFromString<ExampleResponse>("""
{
"id": 1,
"someDecimal": "1.31"
}
""")
This gave me an error:
java.lang.ExceptionInInitializerError
at com.qmx.web.contract.response.ExampleResponse$$serializer.deserialize(Unknown Source:64)
at com.qmx.web.contract.response.ExampleResponse$$serializer.deserialize(ExampleResponse.kt:24)
at kotlinx.serialization.json.internal.PolymorphicKt.decodeSerializableValuePolymorphic(Polymorphic.kt:63)
at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue(StreamingJsonDecoder.kt:33)
at kotlinx.serialization.json.Json.decodeFromString(Json.kt:85)Javier
02/12/2021, 1:07 PMJavier
02/12/2021, 1:08 PMTiago Nunes
02/12/2021, 1:08 PMTiago Nunes
02/12/2021, 1:10 PMTiago Nunes
02/12/2021, 1:11 PMJavier
02/12/2021, 1:11 PMJavier
02/12/2021, 1:12 PMsasdsadas
should work tooTiago Nunes
02/12/2021, 1:13 PMJavier
02/12/2021, 1:13 PMJavier
02/12/2021, 1:14 PMsomeDecimal
,Tiago Nunes
02/12/2021, 1:17 PMTiago Nunes
02/12/2021, 1:18 PM