summaryrefslogtreecommitdiff
path: root/guide/example/example-json-18.kt
diff options
context:
space:
mode:
Diffstat (limited to 'guide/example/example-json-18.kt')
-rw-r--r--guide/example/example-json-18.kt19
1 files changed, 7 insertions, 12 deletions
diff --git a/guide/example/example-json-18.kt b/guide/example/example-json-18.kt
index d3da62d3..1b655bfe 100644
--- a/guide/example/example-json-18.kt
+++ b/guide/example/example-json-18.kt
@@ -5,18 +5,13 @@ import kotlinx.serialization.*
import kotlinx.serialization.json.*
@Serializable
-class Project(val name: String, val language: String)
-
-object ProjectSerializer : JsonTransformingSerializer<Project>(Project.serializer()) {
- override fun transformSerialize(element: JsonElement): JsonElement =
- // Filter out top-level key value pair with the key "language" and the value "Kotlin"
- JsonObject(element.jsonObject.filterNot {
- (k, v) -> k == "language" && v.jsonPrimitive.content == "Kotlin"
- })
-}
+data class Project(val name: String, val language: String)
fun main() {
- val data = Project("kotlinx.serialization", "Kotlin")
- println(Json.encodeToString(data)) // using plugin-generated serializer
- println(Json.encodeToString(ProjectSerializer, data)) // using custom serializer
+ val element = buildJsonObject {
+ put("name", "kotlinx.serialization")
+ put("language", "Kotlin")
+ }
+ val data = Json.decodeFromJsonElement<Project>(element)
+ println(data)
}