xref: /aosp_15_r20/external/kotlinx.serialization/guide/example/example-json-25.kt (revision 57b5a4a64c534cf7f27ac9427ceab07f3d8ed3d8)

<lambda>null1*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.exampleJson25
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 @Serializable
8*57b5a4a6SAndroid Build Coastguard Worker class Project(val name: String, val language: String)
9*57b5a4a6SAndroid Build Coastguard Worker 
10*57b5a4a6SAndroid Build Coastguard Worker object ProjectSerializer : JsonTransformingSerializer<Project>(Project.serializer()) {
11*57b5a4a6SAndroid Build Coastguard Worker     override fun transformSerialize(element: JsonElement): JsonElement =
12*57b5a4a6SAndroid Build Coastguard Worker         // Filter out top-level key value pair with the key "language" and the value "Kotlin"
13*57b5a4a6SAndroid Build Coastguard Worker         JsonObject(element.jsonObject.filterNot {
14*57b5a4a6SAndroid Build Coastguard Worker             (k, v) -> k == "language" && v.jsonPrimitive.content == "Kotlin"
15*57b5a4a6SAndroid Build Coastguard Worker         })
16*57b5a4a6SAndroid Build Coastguard Worker }
17*57b5a4a6SAndroid Build Coastguard Worker 
mainnull18*57b5a4a6SAndroid Build Coastguard Worker fun main() {
19*57b5a4a6SAndroid Build Coastguard Worker     val data = Project("kotlinx.serialization", "Kotlin")
20*57b5a4a6SAndroid Build Coastguard Worker     println(Json.encodeToString(data)) // using plugin-generated serializer
21*57b5a4a6SAndroid Build Coastguard Worker     println(Json.encodeToString(ProjectSerializer, data)) // using custom serializer
22*57b5a4a6SAndroid Build Coastguard Worker }
23