1*57b5a4a6SAndroid Build Coastguard Worker // This file was automatically generated from json.md by Knit tool. Do not edit. 2*57b5a4a6SAndroid Build Coastguard Worker package example.exampleJson28 3*57b5a4a6SAndroid Build Coastguard Worker 4*57b5a4a6SAndroid Build Coastguard Worker import kotlinx.serialization.* 5*57b5a4a6SAndroid Build Coastguard Worker import kotlinx.serialization.json.* 6*57b5a4a6SAndroid Build Coastguard Worker 7*57b5a4a6SAndroid Build Coastguard Worker import kotlinx.serialization.descriptors.* 8*57b5a4a6SAndroid Build Coastguard Worker import kotlinx.serialization.encoding.* 9*57b5a4a6SAndroid Build Coastguard Worker 10*57b5a4a6SAndroid Build Coastguard Worker data class UnknownProject(val name: String, val details: JsonObject) 11*57b5a4a6SAndroid Build Coastguard Worker 12*57b5a4a6SAndroid Build Coastguard Worker object UnknownProjectSerializer : KSerializer<UnknownProject> { <lambda>null13*57b5a4a6SAndroid Build Coastguard Worker override val descriptor: SerialDescriptor = buildClassSerialDescriptor("UnknownProject") { 14*57b5a4a6SAndroid Build Coastguard Worker element<String>("name") 15*57b5a4a6SAndroid Build Coastguard Worker element<JsonElement>("details") 16*57b5a4a6SAndroid Build Coastguard Worker } 17*57b5a4a6SAndroid Build Coastguard Worker deserializenull18*57b5a4a6SAndroid Build Coastguard Worker override fun deserialize(decoder: Decoder): UnknownProject { 19*57b5a4a6SAndroid Build Coastguard Worker // Cast to JSON-specific interface 20*57b5a4a6SAndroid Build Coastguard Worker val jsonInput = decoder as? JsonDecoder ?: error("Can be deserialized only by JSON") 21*57b5a4a6SAndroid Build Coastguard Worker // Read the whole content as JSON 22*57b5a4a6SAndroid Build Coastguard Worker val json = jsonInput.decodeJsonElement().jsonObject 23*57b5a4a6SAndroid Build Coastguard Worker // Extract and remove name property 24*57b5a4a6SAndroid Build Coastguard Worker val name = json.getValue("name").jsonPrimitive.content 25*57b5a4a6SAndroid Build Coastguard Worker val details = json.toMutableMap() 26*57b5a4a6SAndroid Build Coastguard Worker details.remove("name") 27*57b5a4a6SAndroid Build Coastguard Worker return UnknownProject(name, JsonObject(details)) 28*57b5a4a6SAndroid Build Coastguard Worker } 29*57b5a4a6SAndroid Build Coastguard Worker serializenull30*57b5a4a6SAndroid Build Coastguard Worker override fun serialize(encoder: Encoder, value: UnknownProject) { 31*57b5a4a6SAndroid Build Coastguard Worker error("Serialization is not supported") 32*57b5a4a6SAndroid Build Coastguard Worker } 33*57b5a4a6SAndroid Build Coastguard Worker } 34*57b5a4a6SAndroid Build Coastguard Worker mainnull35*57b5a4a6SAndroid Build Coastguard Workerfun main() { 36*57b5a4a6SAndroid Build Coastguard Worker println(Json.decodeFromString(UnknownProjectSerializer, """{"type":"unknown","name":"example","maintainer":"Unknown","license":"Apache 2.0"}""")) 37*57b5a4a6SAndroid Build Coastguard Worker } 38