@@ -91,10 +91,17 @@ object RawStmtSerializer : KSerializer<RawStmtDto> {
9191 override fun deserialize (decoder : Decoder ): RawStmtDto {
9292 require(decoder is JsonDecoder )
9393 val element = decoder.decodeJsonElement().jsonObject
94- val kind = element.getValue(" _" ).jsonPrimitive.content
95- val details = element.toMutableMap()
96- details.remove(" _" )
97- return RawStmtDto (kind, JsonObject (details))
94+ if (" _" in element.keys) {
95+ val kind = element.getValue(" _" ).jsonPrimitive.content
96+ val details = element.toMutableMap()
97+ details.remove(" _" )
98+ return RawStmtDto (kind, JsonObject (details))
99+ } else {
100+ val kind = element.getValue(" kind" ).jsonPrimitive.content
101+ val details = element.toMutableMap()
102+ details.remove(" kind" )
103+ return RawStmtDto (kind, JsonObject (details))
104+ }
98105 }
99106
100107 override fun serialize (encoder : Encoder , value : RawStmtDto ) {
@@ -110,12 +117,21 @@ object RawValueSerializer : KSerializer<RawValueDto> {
110117 override fun deserialize (decoder : Decoder ): RawValueDto {
111118 require(decoder is JsonDecoder )
112119 val element = decoder.decodeJsonElement().jsonObject
113- val kind = element.getValue(" _" ).jsonPrimitive.content
114- val type = decoder.json.decodeFromJsonElement<TypeDto >(element.getValue(" type" ))
115- val details = element.toMutableMap()
116- details.remove(" _" )
117- details.remove(" type" )
118- return RawValueDto (kind, JsonObject (details), type)
120+ if (" _" in element.keys) {
121+ val kind = element.getValue(" _" ).jsonPrimitive.content
122+ val type = decoder.json.decodeFromJsonElement<TypeDto >(element.getValue(" type" ))
123+ val details = element.toMutableMap()
124+ details.remove(" _" )
125+ details.remove(" type" )
126+ return RawValueDto (kind, JsonObject (details), type)
127+ } else {
128+ val kind = element.getValue(" kind" ).jsonPrimitive.content
129+ val type = decoder.json.decodeFromJsonElement<TypeDto >(element.getValue(" type" ))
130+ val details = element.toMutableMap()
131+ details.remove(" kind" )
132+ details.remove(" type" )
133+ return RawValueDto (kind, JsonObject (details), type)
134+ }
119135 }
120136
121137 override fun serialize (encoder : Encoder , value : RawValueDto ) {
@@ -131,10 +147,17 @@ object RawTypeSerializer : KSerializer<RawTypeDto> {
131147 override fun deserialize (decoder : Decoder ): RawTypeDto {
132148 require(decoder is JsonDecoder )
133149 val element = decoder.decodeJsonElement().jsonObject
134- val kind = element.getValue(" _" ).jsonPrimitive.content
135- val details = element.toMutableMap()
136- details.remove(" _" )
137- return RawTypeDto (kind, JsonObject (details))
150+ if (" _" in element.keys) {
151+ val kind = element.getValue(" _" ).jsonPrimitive.content
152+ val details = element.toMutableMap()
153+ details.remove(" _" )
154+ return RawTypeDto (kind, JsonObject (details))
155+ } else {
156+ val kind = element.getValue(" kind" ).jsonPrimitive.content
157+ val details = element.toMutableMap()
158+ details.remove(" kind" )
159+ return RawTypeDto (kind, JsonObject (details))
160+ }
138161 }
139162
140163 override fun serialize (encoder : Encoder , value : RawTypeDto ) {
0 commit comments