summaryrefslogtreecommitdiff
path: root/runtime/common/src/testWithNative/kotlinx/serialization/json/parser/examples/Parsers.kt
blob: 6c8e1662590352f97e4ce67d11096e59c8a1175d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package kotlinx.serialization.json.parser.examples

import kotlinx.serialization.json.*

abstract class JsonParser<T: Any> {

    abstract fun write(value: T): JsonElement

    fun writeNullable(value: T?): JsonElement {
        if (value == null) return JsonNull
        return write(value)
    }

    abstract fun read(json: JsonObject): T

    fun read(json: JsonElement): T? {
        if (json.isNull) return null
        return read(json.jsonObject)
    }

    fun read(string: String): T = read(Json.plain.parseJson(string).jsonObject)
}