问题标签 [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.

0 投票
1 回答
435 浏览

ios - 由于缺少反射,从 KClass 获取序列化程序在本机上不可用

描述

我在 iOS 和 Android 的多平台库中使用 Kotlinx 序列化库来处理 HTTP 请求。但是当我在 iOS 上使用我的请求功能时出现此消息,有解决方法吗?我函数中的哪一行调用了未实现的函数?

kotlin.NotImplementedError: An operation is not implemented: 由于缺少反射,从 KClass 获取序列化程序在本机上不可用。.serializer() 直接在可序列化类上使用。

重现

这是我写的函数

环境

  • Kotlin 版本:1.3.31

  • Kotlinx 序列化版本:0.11.0

  • Kotlin 平台:iOS 和 Android

  • 摇篮版本:5.1.1

0 投票
2 回答
1872 浏览

json - 使用 kotlinx.serialization 解析空对象

我正在努力理解如何{}用实验kotlinx.serialization库解析一个空对象。事实上,当 API 响应可能是其中之一时,就会出现复杂情况:

或者

我用作序列化程序的数据结构是;

这在 API 客户端库中注释@kotlinx.serialization.Serializable并用于在原始 API 响应和数据模型之间编组。默认值告诉序列化库该字段是可选的,并替换了@OptionalKotlin 1.3.30 之前的方法。

最后,kotlinx.serialization.json.Json我使用的解析器使用nonstrict模板应用了配置。

如何定义一个可以同时解析空对象和预期数据类型的序列化程序kotlinx.serialization?我需要自己编写KSerialiser还是缺少配置。理想情况下,空对象应该被忽略/解析为null

使用我的Thing数据类解析空对象时出现的错误是;

0 投票
1 回答
3374 浏览

json - 从 json 值解析 JSON 对象字符串

我正在向 API 发出请求,响应是一个 JSON 对象,这个 json 对象包含一个字符串,它是另一个 json 对象。我正在尝试使用 kotlinx.serialization 来处理此对象的反序列化。

我可以自己覆盖反序列化功能,但这违背了使用这个库的意义

我希望这样的事情会奏效。

对于类似以下对象

我希望得到一个具有属性数据的对象 Foo = 具有属性 foo = "bar" 的对象数据

但是我收到以下错误

0 投票
0 回答
645 浏览

json - 尝试从空 JSON 元素解析 Map 时如何避免错误

当我的端点的 JSON 响应"data"元素返回结果时,我成功地将所述结果解析为Map<String, MyCustomDataType>.

但是当我的端点的 JSON 响应的"data"元素返回空时,例如"data": [],我的反序列化会引发错误“行号无效 JSON:预期'{,种类:kotlinx.serialization.StructureKind$Map@6f12df1'”

在我使用 aList反序列化数据元素的不同端点中,我可以处理这个空数据数组结果而不会出错

我现在如何使用地图类似地处理这个问题?这是我目前未成功尝试的:

正确解析时的示例 JSON 响应:

抛出错误时的示例 JSON:

0 投票
1 回答
2632 浏览

json - 如何使用动态对象反序列化 JSON?

我有一个简单的 json,但包含字段有动态对象。例如,json 看起来像

或者

我正在尝试序列化此对象,但不确定如何映射动态字段

上面的代码失败并出现以下错误

后端内部错误:代码生成期间出现异常原因:后端(JVM)内部错误:未找到任何类型元素的序列化程序。

0 投票
1 回答
111 浏览

android - 如何将 arrayOf JSONArray 的 JSON 转换为对象

我有以下 JSON 数组:

我想将它转换为一个对象,但问题是我有嵌套数组,下面的解决方案不起作用;

0 投票
1 回答
1389 浏览

json - 使用 kotlinx 序列化序列化选项列表

如何使用 kotlinx 序列化对可选字符串列表进行字符串化?我想执行类似于:

但是,这不会编译。我知道这String.serializer().list提供了SerializationStrategy<List<String>>我需要的地方SerializationStrategy<List<String?>>。我怎样才能获得后者?

0 投票
4 回答
4780 浏览

kotlin - Kotlinx 序列化 - 自定义序列化程序以忽略空值

假设我正在上课:

假设aisnullb' 的值为“b 值”,则Json.stringify(MyClass.serializer(), this)产生:

基本上如果anull,我想得到这个:

通过一些研究,我发现目前 Kotlinx 序列化开箱即用是不可行的,所以我试图构建一个自定义序列化程序来显式忽略null值。我从这里按照指南进行操作,但无法做出正确的指南。

有人可以帮我解释一下吗?谢谢。

0 投票
1 回答
1846 浏览

json - 如何使用 kotlinx 在 Kotlin 上使用未知键迭代 JsonElement?

我是 Kotlin 的新手,我正在尝试解析一个 Json 文件来获取您的值。第一个问题是我不知道密钥,第二个问题是我不知道完美地使用 Kotlin。让我解释一下这个案子。

这是我从网上获得的 Json 格式:

请注意,键可以随时间更改。到目前为止,我可以获取文件并打印它:

没关系,内容正确打印在一行中。所以,现在我想像 map.iterator 一样迭代这个键。在 Kotlin 上如何实现?

0 投票
2 回答
351 浏览

kotlin - Kotlinx 序列化,避免在其他数据类型上崩溃

我在应用程序中使用外部 API,而反序列化是使用 Kotlinx 序列化包完成的,当 api 结果是多个值的 Int 数组和单个值的原始 int 时,我遇到了问题。我怎样才能避免在这个过程中崩溃。是否有更好的方法来避免崩溃或创建数据类

前任:

当插槽具有单值 API 返回{slots: 1} 时 当插槽具有多个值 API 返回{ slots: [1,2,3,4]}