@@ -42,14 +42,17 @@ import kotlinx.serialization.encoding.Encoder
4242{ {/multiplatform} }
4343{ {#multiplatform} }
4444import kotlinx.serialization.*
45+ import kotlinx.serialization.builtins.serializer
46+ import kotlinx.serialization.encoding.Decoder
47+ import kotlinx.serialization.encoding.Encoder
4548{ {/multiplatform} }
4649
4750/**
4851 * { {{description} }}
4952 *
5053 * Values: { {#allowableValues} }{ {#enumVars} }{ {&name} }{ {^-last} },{ {/-last} }{ {/enumVars} }{ {/allowableValues} }
5154 */
52- { {#multiplatform} }@Serializable{ {/multiplatform} }{ {#kotlinx_serialization} }@Serializable{ {#enumUnknownDefaultCase} }(with = { {classname} }Serializer::class){ {/enumUnknownDefaultCase} }{ {^enumUnknownDefaultCase} }{ {^isString} }(with = { {classname} }Serializer::class){ {/isString} }{ {/enumUnknownDefaultCase} }{ {/kotlinx_serialization} }
55+ { {#multiplatform} }@Serializable{ {^isString } }(with = { {classname } }Serializer::class) { {/isString } } { { /multiplatform} }{ {#kotlinx_serialization} }@Serializable{ {#enumUnknownDefaultCase} }(with = { {classname} }Serializer::class){ {/enumUnknownDefaultCase} }{ {^enumUnknownDefaultCase} }{ {^isString} }(with = { {classname} }Serializer::class){ {/isString} }{ {/enumUnknownDefaultCase} }{ {/kotlinx_serialization} }
5356{ {^multiplatform} }
5457{ {#moshi} }
5558@JsonClass(generateAdapter = false)
@@ -74,7 +77,9 @@ import kotlinx.serialization.*
7477 { {/kotlinx_serialization} }
7578 { {/multiplatform} }
7679 { {#multiplatform} }
80+ { {#isString} }
7781 @SerialName(value = { {#lambda.doublequote} }{ {{value} }}{ {/lambda.doublequote} })
82+ { {/isString} }
7883 { {/multiplatform} }
7984 { {#isArray} }
8085 { {#isList} }
@@ -172,3 +177,20 @@ internal object {{classname}}Serializer : KSerializer<{{classname}}> {
172177}
173178{ {/isString} }{ {/enumUnknownDefaultCase} }
174179{ {/kotlinx_serialization} }
180+ { {#multiplatform} }
181+ { {^isString} }
182+ internal object { {classname} }Serializer : KSerializer<{ {classname} }> {
183+ override val descriptor = {{dataType} }.serializer().descriptor
184+
185+ override fun deserialize(decoder: Decoder): { {classname} } {
186+ val value = decoder.decodeSerializableValue({{{dataType} }}.serializer())
187+ return { {classname} }.values().firstOrNull { it.value == value }
188+ ?: throw IllegalArgumentException("Unknown enum value: $value")
189+ }
190+
191+ override fun serialize(encoder: Encoder, value: { {classname} }) {
192+ encoder.encodeSerializableValue({{{dataType} }}.serializer(), value.value)
193+ }
194+ }
195+ { {/isString} }
196+ { {/multiplatform} }
0 commit comments