summaryrefslogtreecommitdiff
path: root/guide/example/example-json-19.kt
diff options
context:
space:
mode:
Diffstat (limited to 'guide/example/example-json-19.kt')
-rw-r--r--guide/example/example-json-19.kt37
1 files changed, 12 insertions, 25 deletions
diff --git a/guide/example/example-json-19.kt b/guide/example/example-json-19.kt
index 4455d637..b001c55a 100644
--- a/guide/example/example-json-19.kt
+++ b/guide/example/example-json-19.kt
@@ -4,33 +4,20 @@ package example.exampleJson19
import kotlinx.serialization.*
import kotlinx.serialization.json.*
-import kotlinx.serialization.builtins.*
+import java.math.BigDecimal
-@Serializable
-abstract class Project {
- abstract val name: String
-}
-
-@Serializable
-data class BasicProject(override val name: String): Project()
-
-
-@Serializable
-data class OwnedProject(override val name: String, val owner: String) : Project()
+val format = Json { prettyPrint = true }
-object ProjectSerializer : JsonContentPolymorphicSerializer<Project>(Project::class) {
- override fun selectDeserializer(element: JsonElement) = when {
- "owner" in element.jsonObject -> OwnedProject.serializer()
- else -> BasicProject.serializer()
+fun main() {
+ val pi = BigDecimal("3.141592653589793238462643383279")
+
+ val piJsonDouble = JsonPrimitive(pi.toDouble())
+ val piJsonString = JsonPrimitive(pi.toString())
+
+ val piObject = buildJsonObject {
+ put("pi_double", piJsonDouble)
+ put("pi_string", piJsonString)
}
-}
-fun main() {
- val data = listOf(
- OwnedProject("kotlinx.serialization", "kotlin"),
- BasicProject("example")
- )
- val string = Json.encodeToString(ListSerializer(ProjectSerializer), data)
- println(string)
- println(Json.decodeFromString(ListSerializer(ProjectSerializer), string))
+ println(format.encodeToString(piObject))
}