问题标签 [decodable]
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 - 从可编码结构中获取错误消息
我正在解码一个 JSON 结构,如果它无法解码,此时在我的错误检查中,这意味着服务器响应中缺少一个字段,我想向用户显示该字段。
解码此结构时:
这里
如果没有字段 .data,我想在 catch 块中的 responseObject.message 中返回消息。但是我不允许将响应重新解码到这个结构中。
当第一次解码失败时,我应该如何尝试获取消息。谢谢
json - Swift 4 使用“ - ”字母解码 json
swift 4 Decodable 协议如何与“ - ”字母一起使用?例如:
在我的 Swift 课程中:
不知道怎么改class,但是json不能改...
json - 用 qoutes 包装的 Swift 4 Codable 解码数组
来自 API 的格式非常糟糕的 json 响应:
我需要将这个“形状”键解码到我的自定义结构中,这似乎没什么大不了的,但我有引号包裹着数组"[]"
所以,我有什么:
合理地有错误
而且这个电话有效(仅用于测试目的):
并有这个输出:
所以有什么方法可以将这个字符串样式包装的 json 数组解码为 Swift 数组Codable
?
我设法做了一些解决方法,它有效,但它似乎根本不是一个好的解决方案。将在此处发布,但问题“是否有任何方法可以正常使用 Codable 实现此功能”仍处于打开状态
json - 将 swift 4 可解码协议与 RxSwift 一起使用
我最近尝试使用 Decodable 协议将 JSON 解析为模型,并且我已经成功地做到了。但现在我想使用 RxSwift 实现双向绑定。为此,我需要声明“变量<>”类型的变量。这是我模型中的一个片段:
现在,如果我将“批处理完成”从 String() 更改为 Variable,init() 方法会引发错误:
进行这些更改,您将收到错误消息。
swift - JSONEncoder 和 PropertyListEncoder 不符合 Encoder?
我正在尝试编写一个包装给定/的Encoder
/对。这个包装器的目标是成功处理循环引用(既不做也不做),并将实际的编码/解码委托给被包装的编码器。Decoder
Encoder
Decoder
JSONEncoder
PropertyListEncoder
我惊讶地发现既不JSONEncoder
也不PropertyListEncoder
符合Encoder
,同样,他们的Decoder
同行也不符合Decoder
!
这似乎很奇怪。如果这两种类型不符合,那么Encoder
协议的意义何在?查看源代码,我可以看到内部_JSONEncoder
符合,但它是fileprivate
.
那么没有希望了吗?真的没有办法笼统地包装一个Encoder
like JSONENcoder
orPropertyListEncoder
吗?
ios - Swift 4 JSON 值为空
我在优雅地处理此错误时遇到问题debugDescription: "Expected String value but found null instead."
我知道在符合 的结构中Codable
,我的存储属性需要声明为可选字符串,正如我在这篇文章中所读到的
我试过了,仍然出现错误。我在那篇文章中还读到,我还可以自定义解码器以将 nil 替换为空字符串。我不知道如何诚实地做到这一点。
这是我的代码:
由于我正在使用电影 api,因此某些电影的posterPath
in为空。DiscoverResults
如果需要 JSON 本身,我将编辑该帖子。
swift - 可解码和枚举值
解码对象时枚举值不存在的情况应该如何处理?例如,我将如何处理下面示例中评级类型为“可怕”的情况?如果不存在任何值,有没有办法设置默认值?
swift - Swift Init 不符合预期的“解码器”类型
目前,我有一个符合 Codable 的结构:
当我尝试使用以下内容初始化对象时:
我收到以下错误:
如何解决此问题并正确初始化结构?
realm - Realm 中的 Swift 4 可解码和列表持久性
将项目迁移到 swift 4 后,我开始使用 Decodable 将对象的序列化从 JSON 迁移到 Realm Object。我的对象内部有一个列表,该列表也在我的init(from decoder: Decoder)
方法中进行了初始化。在代码中:
序列化后检查对象,一切都很好。所有数据都正确序列化。然后稍后在网络层中,新序列化的对象被持久化在领域中:
当我从领域重新获取对象时:
结果是一个 MyObj 实例,但 fooList 为空。
显然我做错了什么,但是什么?:D
inheritance - 可编码类的继承
我正在使用 Swift 4 和 Xcode 9.2 编写程序。我在编写可编码类(确切地说是类,而不是结构)时遇到了困难。当我试图从另一个类继承一个类时,JSONEncoder 不会从子类(子类)中获取所有属性。请看这个:
它会打印这个:{"a":"a","b":"b"}
但我需要这个:{"a":"a","b":"b","c":"c"}
看起来c
阶级的财产AdditionalData
只是不知何故丢失了。
所以问题是:如果我有使用协议 Encodable 签名的类,如何正确地制作子类(此类的子类,继承)类?
我将感谢任何帮助或建议。