// This file was automatically generated from json.md by Knit tool. Do not edit. package example.exampleJson28 import kotlinx.serialization.* import kotlinx.serialization.json.* import kotlinx.serialization.descriptors.* import kotlinx.serialization.encoding.* data class UnknownProject(val name: String, val details: JsonObject) object UnknownProjectSerializer : KSerializer { override val descriptor: SerialDescriptor = buildClassSerialDescriptor("UnknownProject") { element("name") element("details") } override fun deserialize(decoder: Decoder): UnknownProject { // Cast to JSON-specific interface val jsonInput = decoder as? JsonDecoder ?: error("Can be deserialized only by JSON") // Read the whole content as JSON val json = jsonInput.decodeJsonElement().jsonObject // Extract and remove name property val name = json.getValue("name").jsonPrimitive.content val details = json.toMutableMap() details.remove("name") return UnknownProject(name, JsonObject(details)) } override fun serialize(encoder: Encoder, value: UnknownProject) { error("Serialization is not supported") } } fun main() { println(Json.decodeFromString(UnknownProjectSerializer, """{"type":"unknown","name":"example","maintainer":"Unknown","license":"Apache 2.0"}""")) }