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

0 投票
3 回答
6313 浏览

json - 如何将(Swift4)初始化添加到可解码协议

我正在尝试创建一个Codable 扩展,该扩展能够仅使用 json 字符串初始化可解码(Swift 4)对象。所以应该工作的是:

我认为这意味着我应该创建一个使用解码器调用 self.init 的 init。这是我想出的代码:

该代码能够获取解码器,但在调用 init 时出现编译器错误。我得到的错误是:

'self' 在 self.init 调用之前使用

这是否意味着无法在 Decodable 协议中添加 init ?

有关完整的源代码,请参见github 上的可编码扩展

更新: 从@appzYourLive 调试以下解决方案后,我发现我与可init(json:解码和数组上的初始化程序发生冲突。我刚刚在 GitHub 上发布了一个新版本的扩展。我还添加了解决方案作为这个问题的新答案。

0 投票
1 回答
2186 浏览

swift - Swift 4 的可解码泛型

我正在使用DecodableSwift 4 中引入的新协议。在我的单元测试中,我想使用一个通用方法来解码特定Decodable类型的特定 JSON 文件。

我编写了以下与该JSONDecoder decode方法匹配的函数:

编译器给我以下错误:

In argument type 'Obj.Type', 'Obj' does not conform to expected type 'Decodable'

Obj由于该where子句,我会想象这是可解码的。

该功能有什么问题?

0 投票
1 回答
364 浏览

ios - Codable/Decodable 不是解码

有人可以帮我吗?我在此示例中使用 Playground,因此您可以将整个代码放入 Playground 并查看结果。

我发现当我删除这一行时:

它似乎工作。

(JSON 已验证)

0 投票
1 回答
3767 浏览

swift - Codable/Decodable 应该用字符串解码数组

为什么名称数组不解码?

为游乐场准备,只需将其粘贴到您的游乐场

0 投票
1 回答
724 浏览

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

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

应该只是

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

0 投票
1 回答
10754 浏览

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

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

0 投票
1 回答
8580 浏览

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

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

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

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

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

plist 文件的结构类似于

有什么建议吗?

0 投票
3 回答
16932 浏览

json - Swift 4 可解码,直到解码时才知道密钥

Swift 4 Decodable 协议如何处理包含直到运行时才知道名称的键的字典?例如:

这里我们有一个字典数组;第一个有键categoryNameand Trending,而第二个有键categoryNameand Comedy。键的值categoryName告诉我第二个键的名称。我如何使用 Decodable 来表达这一点?

0 投票
2 回答
4043 浏览

json - 使用 Swift 4 的 Decodable 解码 Void

我有一个通用的 REST 请求:

是请求的T返回类型,例如:

现在我想表达泛型类型必须符合,Decodable以便我可以解码来自服务器的 JSON 响应:

这是有道理且有效的——直到我收到一个没有响应的请求,一个Request<Void>. 编译器对此不满意:

编译器很快发现了我通过添加Decodable一致性来解决这个问题的恶作剧:Void

让请求泛型而不是返回类型感觉是正确的。有没有办法让它与Void返回类型一起工作?(例如,只是在服务器上创建一些东西而不返回任何东西的请求。)

0 投票
2 回答
989 浏览

json - 当键仅在运行时已知时展平 JSON

假设我们有一个如下的 JSON 结构(通常用于 Firebase 的实时数据库):

预期的解决方案:

使用Decodable我想将其转换为 3 个元素的数组:

id属性对应于 json 对象的根字符串,例如:18348b9b-9a49-4e04-ac35-37e38a8db1e2.

解决方法:

我已经尝试了几种方法,但如果不需要辅助实体(或使用可选)就无法获得 id 属性:

使用init(from: Decoder)并不像在其他情况下那么简单,因为keyedContainer(,)由于密钥未知而无法使用。


Decodable适合这些类型的情况吗?