问题标签 [kotlinx.serialization]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 使用 Retrofit 处理 Kotlin 序列化 MissingFieldException
我将kotlinx.serialization与 retrofit 结合使用。我收到的 json 响应将根据它包含的属性而有所不同。在大多数情况下,我的应用程序中的数据模型包含的字段比我在响应中收到的要多。我无法控制它,所以我需要在代码中处理它。
MissingFieldException
在这种情况下,Kotlinx.serialization 会抛出 a 。我知道在使用时Json.parse
您可以将其包装在 try-catch 块中并忽略此类错误。但由于我使用的是改造,我看不到使用这种方法的方法:
网络服务.kt
MainActivity.kt
json 响应(在这个组成的示例中)故意省略了“缺失”字段:
由于该 json 不包含missing
数据类中的字段,因此应用程序崩溃并抛出MissingFieldException
. 我想知道如何在改造案例中避免这个问题。
谢谢你的帮助。
kotlin - 具有多态 kotlinx 序列化的自定义序列化程序
使用 kotlinx.serialization 多态性,我想得到
但我明白了
我使用以下型号
我应用以下Json
我使用序列化器 TruckKSerializer 因为服务器采用扁平结构。同时,在应用程序中我想使用一个对象 Truck.Body。对于扁平化,我根据这些类中的文档使用 JsonOutput 和 JsonInput覆盖fun serialize(encoder: Encoder, obj : T)
和在 Serializator 中。fun deserialize(decoder: Decoder): T
最后,我使用stringify(serializer: SerializationStrategy<T>, obj: T)
我最终得到{"type":"kotlin.collections.LinkedHashMap", ...}
,但我需要{"type":"veh_t", ...}
如何获得正确的类型?我想使用多态性Vehicle
并使用 Truck.Body.serializer() 对 Body 对象进行编码以展平。
通过这种序列化,PassengerCar 类运行良好。
结果正确:
我认为问题在于自定义序列化程序TruckKSerializer
。我注意到如果我在覆盖的fun serialize(encoder: Encoder, obj : T)
下一个代码中使用
我得到了正确的类型,但无法使用它的序列化程序展平对象 Truck.Body。
kotlin - 复杂层次结构的多态 kotlinx 序列化
使用多态序列化,我想序列化类 A、B1、B2。我想获得 B2 类的以下行
我使用层次结构
并像这样进行序列化
结果,我得到kotlinx.serialization.SerializationException: class B2 (Kotlin reflection is not available) is not registered for polymorphic serialization in the scope of interface BaseClass (Kotlin reflection is not available)
如何正确序列化给定的结构?B1、B2 类必须使用类型“type_2”进行序列化。
android - ReamList 和 List 的 Kotlin 序列化序列化程序
我只是尝试使用 Kotlin 序列化库来替换 Gson,但是在我的模型中将它用于 RealmList 时遇到问题。任何帮助将不胜感激。我收到错误
kotlinx.serialization.SerializationException: Can't locate argument-less serializer for class io.realm.RealmList
我有这样的数据类
我的社交数据类是
这是我的改造建造者
我正在使用专门用于 Kotlin 序列化的改造适配器和我的改造电话
arrays - kotlin 中带有 ByteArray 的数据类
我在 Kotlin 中创建了一个 Data 类,其中包含一个 ByteArray 形式的图像。构建时出现以下错误:
错误中的主要信息似乎是primitive arrays are not supported yet
. 如果删除ByteArray
数据类,则编译正确。
有没有办法用 ByteArray 创建数据类?或者有没有办法将 a 转换ByteArray
为Array<Byte>
?
谢谢你的帮助
kotlin - 如何在 Kotlin 多平台项目中使用 @SerializedName?
我正在使用 Kotlin 多平台。我在 Json 响应中获取对象名称。我想用其他名称映射对象名称。所以我发现使用@SerializedName。但它不起作用。
它说未解决的参考:SerializedName。
kotlin - 如何使用 kotlinx 序列化 json 的动态键
我有一个带有这种键的json:
对象中的所有键metaData
都是动态的(不是真的,但有数百个不同的键)我如何序列化这个对象而不必创建一个包含所有可能键的类。
这是我的工作:
android - Ktor:有效 JSON 上的 JsonDecodingException
在此代码之后引发以下异常。有趣的是,它在调试和单步执行代码时起作用。在最后一行抛出异常。
科特林 1.3.60
克托尔 1.2.6
kotlinx.serialization 0.14.0
当不使用调试器单步执行时,日志状态text
为空。怎么会这样?这是在传输所有内容之前运行吗?
android - Kotlinx.serialization 不适用于 androidTest
在我的项目中设置 Ktor 并正常工作。运行 androidTest (“仪器测试”)时,我得到一个NoSuchMethodError
在测试中运行的 Json.nonstrict.parse() 代码。这是测试 apk 中的代码,而不是应用程序中的代码。
Kotlinx.serialization 依赖项在模块中声明,我已经尝试过implementation
和androidImplementation
.
kotlin - 常见 Java 类是否有默认的序列化器实现?
我正在尝试kotlinx.serializaion
,发现缺乏对常见类型的默认支持有点令人反感。举个例子java.util.UUID
;即使应用@ContextualSerialization
,我得到一个错误,编译器无法找到这种类型的无参数序列化程序。假设推荐的解决方案是为 UUID 实现自定义序列化程序,我是否正确?是否没有办法(或计划)为常见类型提供默认序列化程序作为生活质量功能?