Cleanup Json serializers
This commit is contained in:
parent
7aec2f3547
commit
b404615145
@ -4,7 +4,7 @@ plugins {
|
||||
|
||||
allprojects {
|
||||
group = "space.kscience"
|
||||
version = "0.5.0-dev-5"
|
||||
version = "0.5.0-dev-6"
|
||||
}
|
||||
|
||||
subprojects {
|
||||
|
@ -6,7 +6,7 @@ package space.kscience.dataforge.io
|
||||
import io.ktor.utils.io.core.Input
|
||||
import io.ktor.utils.io.core.Output
|
||||
import kotlinx.serialization.json.Json
|
||||
import kotlinx.serialization.json.JsonElement
|
||||
import kotlinx.serialization.json.JsonObject
|
||||
import space.kscience.dataforge.context.Context
|
||||
import space.kscience.dataforge.io.IOFormat.Companion.NAME_KEY
|
||||
import space.kscience.dataforge.meta.Meta
|
||||
@ -25,7 +25,7 @@ public class JsonMetaFormat(private val json: Json = DEFAULT_JSON) : MetaFormat
|
||||
|
||||
override fun writeMeta(output: Output, meta: Meta, descriptor: MetaDescriptor?) {
|
||||
val jsonObject = meta.toJson(descriptor)
|
||||
output.writeUtf8String(json.encodeToString(JsonElement.serializer(), jsonObject))
|
||||
output.writeUtf8String(json.encodeToString(JsonObject.serializer(), jsonObject))
|
||||
}
|
||||
|
||||
override fun toMeta(): Meta = Meta {
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -61,7 +61,16 @@ private fun Meta.toJsonWithIndex(descriptor: MetaDescriptor?, index: String?): J
|
||||
JsonObject(pairs.toMap())
|
||||
}
|
||||
|
||||
public fun Meta.toJson(descriptor: MetaDescriptor? = null): JsonElement = toJsonWithIndex(descriptor, null)
|
||||
public fun Meta.toJson(descriptor: MetaDescriptor? = null): JsonObject {
|
||||
val element = toJsonWithIndex(descriptor, null)
|
||||
return if(element is JsonObject){
|
||||
element
|
||||
} else {
|
||||
buildJsonObject {
|
||||
put("@value", element)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert a Json primitive to a [Value]
|
||||
|
@ -5,7 +5,6 @@ import kotlinx.serialization.descriptors.SerialDescriptor
|
||||
import kotlinx.serialization.encoding.Decoder
|
||||
import kotlinx.serialization.encoding.Encoder
|
||||
import kotlinx.serialization.json.JsonDecoder
|
||||
import kotlinx.serialization.json.JsonElement
|
||||
import kotlinx.serialization.json.JsonEncoder
|
||||
|
||||
/**
|
||||
@ -14,19 +13,17 @@ import kotlinx.serialization.json.JsonEncoder
|
||||
public object MetaSerializer : KSerializer<Meta> {
|
||||
private val genericMetaSerializer = SealedMeta.serializer()
|
||||
|
||||
private val jsonSerializer = JsonElement.serializer()
|
||||
|
||||
override val descriptor: SerialDescriptor = jsonSerializer.descriptor
|
||||
override val descriptor: SerialDescriptor = genericMetaSerializer.descriptor
|
||||
|
||||
override fun deserialize(decoder: Decoder): Meta = if (decoder is JsonDecoder) {
|
||||
jsonSerializer.deserialize(decoder).toMeta()
|
||||
decoder.decodeJsonElement().toMeta()
|
||||
} else {
|
||||
genericMetaSerializer.deserialize(decoder)
|
||||
}
|
||||
|
||||
override fun serialize(encoder: Encoder, value: Meta) {
|
||||
if (encoder is JsonEncoder) {
|
||||
jsonSerializer.serialize(encoder, value.toJson())
|
||||
encoder.encodeJsonElement(value.toJson())
|
||||
} else {
|
||||
genericMetaSerializer.serialize(encoder, value.seal())
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user