问题标签 [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.
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
json - 使用 kotlinx.serialization 解析空对象
我正在努力理解如何{}
用实验kotlinx.serialization
库解析一个空对象。事实上,当 API 响应可能是其中之一时,就会出现复杂情况:
或者
我用作序列化程序的数据结构是;
这在 API 客户端库中注释@kotlinx.serialization.Serializable
并用于在原始 API 响应和数据模型之间编组。默认值告诉序列化库该字段是可选的,并替换了@Optional
Kotlin 1.3.30 之前的方法。
最后,kotlinx.serialization.json.Json
我使用的解析器使用nonstrict
模板应用了配置。
如何定义一个可以同时解析空对象和预期数据类型的序列化程序kotlinx.serialization
?我需要自己编写KSerialiser
还是缺少配置。理想情况下,空对象应该被忽略/解析为null
?
使用我的Thing
数据类解析空对象时出现的错误是;
json - 从 json 值解析 JSON 对象字符串
我正在向 API 发出请求,响应是一个 JSON 对象,这个 json 对象包含一个字符串,它是另一个 json 对象。我正在尝试使用 kotlinx.serialization 来处理此对象的反序列化。
我可以自己覆盖反序列化功能,但这违背了使用这个库的意义
我希望这样的事情会奏效。
对于类似以下对象
我希望得到一个具有属性数据的对象 Foo = 具有属性 foo = "bar" 的对象数据
但是我收到以下错误
json - 尝试从空 JSON 元素解析 Map 时如何避免错误
当我的端点的 JSON 响应"data"
元素返回结果时,我成功地将所述结果解析为Map<String, MyCustomDataType>
.
但是当我的端点的 JSON 响应的"data"
元素返回空时,例如"data": []
,我的反序列化会引发错误“行号无效 JSON:预期'{,种类:kotlinx.serialization.StructureKind$Map@6f12df1'”
在我使用 aList
反序列化数据元素的不同端点中,我可以处理这个空数据数组结果而不会出错
我现在如何使用地图类似地处理这个问题?这是我目前未成功尝试的:
正确解析时的示例 JSON 响应:
抛出错误时的示例 JSON:
json - 如何使用动态对象反序列化 JSON?
我有一个简单的 json,但包含字段有动态对象。例如,json 看起来像
或者
我正在尝试序列化此对象,但不确定如何映射动态字段
上面的代码失败并出现以下错误
后端内部错误:代码生成期间出现异常原因:后端(JVM)内部错误:未找到任何类型元素的序列化程序。
android - 如何将 arrayOf JSONArray 的 JSON 转换为对象
我有以下 JSON 数组:
我想将它转换为一个对象,但问题是我有嵌套数组,下面的解决方案不起作用;
json - 使用 kotlinx 序列化序列化选项列表
如何使用 kotlinx 序列化对可选字符串列表进行字符串化?我想执行类似于:
但是,这不会编译。我知道这String.serializer().list
提供了SerializationStrategy<List<String>>
我需要的地方SerializationStrategy<List<String?>>
。我怎样才能获得后者?
kotlin - Kotlinx 序列化 - 自定义序列化程序以忽略空值
假设我正在上课:
假设a
isnull
和b
' 的值为“b 值”,则Json.stringify(MyClass.serializer(), this)
产生:
基本上如果a
是null
,我想得到这个:
通过一些研究,我发现目前 Kotlinx 序列化开箱即用是不可行的,所以我试图构建一个自定义序列化程序来显式忽略null
值。我从这里按照指南进行操作,但无法做出正确的指南。
有人可以帮我解释一下吗?谢谢。
json - 如何使用 kotlinx 在 Kotlin 上使用未知键迭代 JsonElement?
我是 Kotlin 的新手,我正在尝试解析一个 Json 文件来获取您的值。第一个问题是我不知道密钥,第二个问题是我不知道完美地使用 Kotlin。让我解释一下这个案子。
这是我从网上获得的 Json 格式:
请注意,键可以随时间更改。到目前为止,我可以获取文件并打印它:
没关系,内容正确打印在一行中。所以,现在我想像 map.iterator 一样迭代这个键。在 Kotlin 上如何实现?
kotlin - Kotlinx 序列化,避免在其他数据类型上崩溃
我在应用程序中使用外部 API,而反序列化是使用 Kotlinx 序列化包完成的,当 api 结果是多个值的 Int 数组和单个值的原始 int 时,我遇到了问题。我怎样才能避免在这个过程中崩溃。是否有更好的方法来避免崩溃或创建数据类
前任:
当插槽具有单值 API 返回{slots: 1}
时 当插槽具有多个值 API 返回{ slots: [1,2,3,4]}