kotlinx.serialization ,编码解码 SnapshotStateList

标签 kotlin serialization deserialization kotlinx.serialization

在 Jetpack Compose 中,SnapshotStateList 是 List 的派生类,但每当我尝试在其上添加可序列化注释时,它都会显示“找不到此类的序列化器,要使用上下文使用 @具有类型或属性的上下文注释”

我有一个 ListContainer 类,我想使其可序列化,它只包含一个 SnapshotStateList 项目列表,可以智能转换为 List 但我不知道如何告诉 kotlin序列化器将其转换为列表/使用简单的列表序列化器!

最佳答案

class SnapshotListSerializer<T>(private val dataSerializer:KSerializer<T>) :
    KSerializer<SnapshotStateList<T>> {

    override val descriptor: SerialDescriptor = ListSerializer(dataSerializer).descriptor

    override fun serialize(encoder: Encoder, value: SnapshotStateList<T>) {
        encoder.encodeSerializableValue(ListSerializer(dataSerializer), value as List<T>)
    }

    override fun deserialize(decoder: Decoder): SnapshotStateList<T> {
        val list = mutableStateListOf<T>()
        val items = decoder.decodeSerializableValue(ListSerializer(dataSerializer))
        list.addAll(items)
        return list
    }
}

我不确定它是否有效,但这是我想出的,我会相应地更新答案

关于kotlinx.serialization ,编码解码 SnapshotStateList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68153701/

相关文章:

java - 我正在 Java 中序列化一个对象,但在反序列化时,它的状态与预期不符。如何保留对象的状态?

java - 在 Spring 中使用 mongodb 聚合展平嵌套数组

java - Spring 集成: downloading only new or updated files from FTP server?

c# - 序列化作为通用 List<> 的基类时,WCF 调用失败

java - 使用 GSON 获取嵌套 JSON 对象 : Deserialization

java - 反序列化映射失败时如何使 Jackson 抛出异常

java - 如何在 Kotlin 中手动为 long 分配字节?

android - 当在键盘上按下特定字符时,我可以切换到另一个 EditText 吗?

javascript - 支持转储和加载的纯 Javascript YAML 库?

Java反序列化实例变量发生变化