问题标签 [codable]

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 回答
724 浏览

swift4 - Codable,Decodable 只是字典中的一个值

我有一个 API 的 json 响应。这也返回一个值,它是一个字典。如何实现仅存储/映射此字典的值。这是一个可以简单地放入操场的示例:

应该只是

这是一个可以简单地放入操场的示例:

0 投票
1 回答
10754 浏览

swift - 用于字符串资源格式的自定义 Swift 编码器/解码器

我一直在玩弄Codable并从文件中读取和写入 JSON。现在我想写一个Coder可以读写iOS.strings文件的自定义。谁能帮我这个?我找到了协议EncoderDecoder,但我不知道我应该在这里实现什么:

0 投票
2 回答
1272 浏览

json - 用swift将JSON嵌套到嵌套字典中

我使用新的 Codable 协议将结构转换为 JSON,然后转换为字典以进行测试。问题是结构中的字典变量没有被转换回来并保持不变Any而不是[Int: String]

这给了我以下结果

当我期望

我将不胜感激任何解释为什么会发生这种情况,或者更好的是如何基本上进行深度 JSON 序列化的解决方案。

我正在添加一个展示问题的游乐场: https ://www.dropbox.com/s/igpntk7az0hevze/JSONSerialisation.playground.zip

0 投票
16 回答
107555 浏览

swift - 如何使用 Swift 的 Codable 编码成字典?

我有一个实现 Swift 4 的结构Codable。是否有一种简单的内置方法将该结构编码到字典中?

0 投票
1 回答
2762 浏览

swift - Swift Codable 协议…编码/解码 NSCoding 类

我有以下结构......</p>

编码Photo失败...</p>

Optional 不符合 Encodable 因为 UIImage 不符合 Encodable

解码失败...</p>

期望非可选类型时未找到键 编码键可选“图像”))

NSObject有没有办法对包含符合NSCoding( UIImage, UIColor, 等)的子类属性的 Swift 对象进行编码?

0 投票
1 回答
306 浏览

swift - Codable:通过索引将 JSONArray 解码为特定字段

我有这个(恕我直言)JSON

我想映射到 this struct,删除 2 个字段的数组。

JSONDecoder能力做到这一点吗?也许使用CodingKey?

0 投票
1 回答
1430 浏览

swift - 使用 Swift JSONEncoder 编码时会发生什么错误

JSONEncoder方法func encode<T>(_ value: T) throws -> Data where T : Encodable是可抛出的。

我想知道为什么它是可抛出的:如果要编码的值不符合Encodable,它不应该通过编译器,所以它在运行时应该不会发生错误。

0 投票
2 回答
3086 浏览

ios - Swift Decodable:如何在解码期间转换其中一个值?

默认情况下,Decodable协议将 JSON 值转换为对象值而不进行任何更改。但有时您需要在 json 解码期间转换值,例如,在您获得的 JSON 中,{id = "id10"}但在您的类实例中,您需要将数字10放入属性中id(甚至放入具有不同名称的属性中)。

您可以实现init(from:)可以使用任何值执行所需操作的方法,例如:

这对我来说听起来很棒,但是如果我只想更改其中一个JSON 字段的值而让我的所有其他 20 个字段保持不变怎么办?如果init(from:)我应该为我班级的 20 个字段中的每一个字段手动获取和放置值!经过多年的 objC 编码,我很直观地首先调用 super 的实现,init(from:)然后只对某些字段进行更改,但是我如何使用 Swift 和Decodable协议实现这样的效果呢?

0 投票
1 回答
8580 浏览

swift - 使用 Swift 4 Codable PropertyListDecoder() 解码 PropertyList

我尝试使用解码 plist,PropertyListDecoder()但是当我尝试访问密钥时,我收到一个错误,指出它的格式错误。我对自己做错了什么感到茫然。我假设我可以Plist像解码 JSON 文件一样解码文件,对吗?我不知道,我还是新手。

这是我的第一种方法,但它会抛出一个错误说

“无法读取数据,因为格式错误”

第二种方法,有点放弃Codable了,仍然无法提取值

plist 文件的结构类似于

有什么建议吗?

0 投票
2 回答
359 浏览

ios - 当 JSON 输入表示 Codable 类型的多个子类时使用 Codable

假设我有一些 JSON,如下所示:

此 JSON 表示两个消息对象。这是我想代表它们的方式(Swift 4):

如何使用 JSON 中的“类型”属性来告诉 Codable 要初始化哪个子类?我的第一直觉是使用枚举作为中介,这将允许我在字符串表示和元类型之间切换

但是,这里的 init 会导致编译器错误
Expression pattern of type 'TextMessage.Type' cannot match values of type 'Message.Type'
- 是否有规范/可接受的方式来处理这种情况?为什么函数 getType 编译时这里的 init 不编译?