@@ -18,10 +18,23 @@ import kotlinx.serialization.Serializable
1818{ {#enumUnknownDefaultCase} }
1919import kotlinx.serialization.KSerializer
2020import kotlinx.serialization.Serializer
21+ { {^isString} }
22+ import kotlinx.serialization.descriptors.PrimitiveKind
23+ import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
24+ { {/isString} }
2125import kotlinx.serialization.builtins.serializer
2226import kotlinx.serialization.encoding.Decoder
2327import kotlinx.serialization.encoding.Encoder
2428{ {/enumUnknownDefaultCase} }
29+ { {^enumUnknownDefaultCase} }{ {^isString} }
30+ import kotlinx.serialization.KSerializer
31+ import kotlinx.serialization.Serializer
32+ import kotlinx.serialization.descriptors.PrimitiveKind
33+ import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
34+ import kotlinx.serialization.builtins.serializer
35+ import kotlinx.serialization.encoding.Decoder
36+ import kotlinx.serialization.encoding.Encoder
37+ { {/isString} }{ {/enumUnknownDefaultCase} }
2538{ {/kotlinx_serialization} }
2639{ {/multiplatform} }
2740{ {#multiplatform} }
@@ -33,7 +46,7 @@ import kotlinx.serialization.*
3346 *
3447 * Values: { {#allowableValues} }{ {#enumVars} }{ {&name} }{ {^-last} },{ {/-last} }{ {/enumVars} }{ {/allowableValues} }
3548 */
36- { {#multiplatform} }@Serializable{ {/multiplatform} }{ {#kotlinx_serialization} }@Serializable{ {#enumUnknownDefaultCase} }(with = { {classname} }Serializer::class){ {/enumUnknownDefaultCase} }{ {/kotlinx_serialization} }
49+ { {#multiplatform} }@Serializable{ {/multiplatform} }{ {#kotlinx_serialization} }@Serializable{ {#enumUnknownDefaultCase} }(with = { {classname} }Serializer::class){ {/enumUnknownDefaultCase} }{ {^enumUnknownDefaultCase } } { {^isString } }(with = { {classname } }Serializer::class) { {/isString } } { {/enumUnknownDefaultCase } } { { /kotlinx_serialization} }
3750{ {^multiplatform} }
3851{ {#moshi} }
3952@JsonClass(generateAdapter = false)
@@ -51,9 +64,9 @@ import kotlinx.serialization.*
5164 { {#jackson} }
5265 @JsonProperty(value = { {#lambda.doublequote} }{ {{value} }}{ {/lambda.doublequote} }){ {#enumUnknownDefaultCase} }{ {#-last} } @JsonEnumDefaultValue{ {/-last} }{ {/enumUnknownDefaultCase} }
5366 { {/jackson} }
54- { {#kotlinx_serialization} }
67+ { {#kotlinx_serialization} }{ {^isString } }
5568 @SerialName(value = { {#lambda.doublequote} }{ {{value} }}{ {/lambda.doublequote} })
56- { {/kotlinx_serialization} }
69+ { {/isString } } { {/ kotlinx_serialization} }
5770 { {/multiplatform} }
5871 { {#multiplatform} }
5972 @SerialName(value = { {#lambda.doublequote} }{ {{value} }}{ {/lambda.doublequote} })
@@ -95,18 +108,40 @@ import kotlinx.serialization.*
95108 }
96109 }
97110 }
98- }{ {#kotlinx_serialization } } { {#enumUnknownDefaultCase } }
99-
111+ }
112+ { {#kotlinx_serialization } } { {#enumUnknownDefaultCase } }
100113internal object { {classname} }Serializer : KSerializer<{ {classname} }> {
101- override val descriptor = {{{ dataType} }}.serializer().descriptor
114+ override val descriptor = {{dataType} }.serializer().descriptor
102115
103116 override fun deserialize(decoder: Decoder): { {classname} } {
104117 val value = decoder.decodeSerializableValue({{{dataType} }}.serializer())
105118 return { {classname} }.values().firstOrNull { it.value == value }
119+ { {#isString} }
106120 ?: { {classname} }.{ {#allowableValues} }{ {#enumVars} }{ {#-last} }{ {&name} }{ {/-last} }{ {/enumVars} }{ {/allowableValues} }
121+ { {/isString} }
122+ { {^isString} }
123+ ?: throw IllegalArgumentException("Unknown enum value: $value")
124+ { {/isString} }
125+ }
126+
127+ override fun serialize(encoder: Encoder, value: { {classname} }) {
128+ encoder.encodeSerializableValue({{{dataType} }}.serializer(), value.value)
129+ }
130+ }
131+ { {/enumUnknownDefaultCase} }
132+ { {^enumUnknownDefaultCase} }{ {^isString} }
133+ internal object { {classname} }Serializer : KSerializer<{ {classname} }> {
134+ override val descriptor = {{dataType} }.serializer().descriptor
135+
136+ override fun deserialize(decoder: Decoder): { {classname} } {
137+ val value = decoder.decodeSerializableValue({{{dataType} }}.serializer())
138+ return { {classname} }.values().firstOrNull { it.value == value }
139+ ?: throw IllegalArgumentException("Unknown enum value: $value")
107140 }
108141
109142 override fun serialize(encoder: Encoder, value: { {classname} }) {
110143 encoder.encodeSerializableValue({{{dataType} }}.serializer(), value.value)
111144 }
112- }{ {/enumUnknownDefaultCase} }{ {/kotlinx_serialization} }
145+ }
146+ { {/isString} }{ {/enumUnknownDefaultCase} }
147+ { {/kotlinx_serialization} }
0 commit comments