【发布时间】:2022-07-22 19:05:10
【问题描述】:
结构类似如下:
@Serializable
sealed class Parameters
@Serializable
data class StringContainer(val value: String): Parameters()
@Serializable
data class IntContainer(val value: Int): Parameters()
@Serializable
data class MapContainer(val value: Map<String, out Parameters>): Parameters()
// more such as list, bool and other fairly (in the context) straight forward types
还有以下容器类:
@Serializable
data class PluginConfiguration(
// other value
val parameters: Parameters.MapContainer,
)
我想实现(反)序列化,其中参数配置为灵活的 json(或其他)映射,正如人们通常期望的那样:
{
"parameters": {
"key1": "String value",
"key2": 12,
"key3": {}
}
}
等等。有效地创建一个灵活的结构,该结构仍然足够结构化,不会像Any 那样完全不受控制。有一个相当明确定义的(反)序列化,但我不知道如何做到这一点。
我已尝试阅读以下内容 https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/serialization-guide.md
而且我确实预感到需要多态序列化程序,但到目前为止,我遇到了两种通用结构,我认为这对我的目的来说太过分了,或者由于某种原因它找不到适合我的序列化程序子类,在为 Parameters 编写自定义序列化程序时。
【问题讨论】:
标签: kotlin serialization