【发布时间】:2021-06-11 09:18:41
【问题描述】:
是否可以在自定义序列化程序中以字符串格式编码/解码任何有效的 json 对象。 例如下面的代码,但不让它序列化为 json 字符串,而是序列化为任何结构未知的有效 JSON?
object JsonObjectSerializer : KSerializer<JsonObject> {
override val descriptor = PrimitiveSerialDescriptor("JsonObject", PrimitiveKind.STRING)
override fun deserialize(decoder: Decoder): JsonObject =
JsonObject(decoder.decodeString())
override fun serialize(encoder: Encoder, value: JsonObject): Unit =
encoder.encodeString(value.encode())
}
Out 会是这样的......
{
"some": "data",
"jsonObject": "{\"this\": \"should not be a string\"}"
}
但想要的输出是..
{
"some": "data",
"jsonObject": {"this": "should not be a string"}
}
【问题讨论】:
-
您找到解决方案了吗?似乎杰克逊通过
@JsonRawValue注释提供了这个(至少在序列化方面),但我似乎在kotlinx.serialization中找不到相同的。 -
@MichelePalmia 是的,可以使用 JsonElement 作为可序列化值github.com/Kotlin/kotlinx.serialization/blob/master/docs/…
标签: json kotlin kotlinx.serialization