问题标签 [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.
json - 如何将(Swift4)初始化添加到可解码协议
我正在尝试创建一个Codable 扩展,该扩展能够仅使用 json 字符串初始化可解码(Swift 4)对象。所以应该工作的是:
我认为这意味着我应该创建一个使用解码器调用 self.init 的 init。这是我想出的代码:
该代码能够获取解码器,但在调用 init 时出现编译器错误。我得到的错误是:
'self' 在 self.init 调用之前使用
这是否意味着无法在 Decodable 协议中添加 init ?
有关完整的源代码,请参见github 上的可编码扩展
更新:
从@appzYourLive 调试以下解决方案后,我发现我与可init(json:
解码和数组上的初始化程序发生冲突。我刚刚在 GitHub 上发布了一个新版本的扩展。我还添加了解决方案作为这个问题的新答案。
swift - Swift 4 的可解码泛型
我正在使用Decodable
Swift 4 中引入的新协议。在我的单元测试中,我想使用一个通用方法来解码特定Decodable
类型的特定 JSON 文件。
我编写了以下与该JSONDecoder
decode
方法匹配的函数:
编译器给我以下错误:
In argument type 'Obj.Type', 'Obj' does not conform to expected type 'Decodable'
Obj
由于该where
子句,我会想象这是可解码的。
该功能有什么问题?
ios - Codable/Decodable 不是解码
有人可以帮我吗?我在此示例中使用 Playground,因此您可以将整个代码放入 Playground 并查看结果。
我发现当我删除这一行时:
它似乎工作。
(JSON 已验证)
swift - Codable/Decodable 应该用字符串解码数组
为什么名称数组不解码?
为游乐场准备,只需将其粘贴到您的游乐场
swift4 - Codable,Decodable 只是字典中的一个值
我有一个 API 的 json 响应。这也返回一个值,它是一个字典。如何实现仅存储/映射此字典的值。这是一个可以简单地放入操场的示例:
应该只是
这是一个可以简单地放入操场的示例:
swift - 用于字符串资源格式的自定义 Swift 编码器/解码器
我一直在玩弄Codable
并从文件中读取和写入 JSON。现在我想写一个Coder
可以读写iOS.strings
文件的自定义。谁能帮我这个?我找到了协议Encoder
和Decoder
,但我不知道我应该在这里实现什么:
swift - 使用 Swift 4 Codable PropertyListDecoder() 解码 PropertyList
我尝试使用解码 plist,PropertyListDecoder()
但是当我尝试访问密钥时,我收到一个错误,指出它的格式错误。我对自己做错了什么感到茫然。我假设我可以Plist
像解码 JSON 文件一样解码文件,对吗?我不知道,我还是新手。
这是我的第一种方法,但它会抛出一个错误说
“无法读取数据,因为格式错误”
第二种方法,有点放弃Codable
了,仍然无法提取值
plist 文件的结构类似于
有什么建议吗?
json - Swift 4 可解码,直到解码时才知道密钥
Swift 4 Decodable 协议如何处理包含直到运行时才知道名称的键的字典?例如:
这里我们有一个字典数组;第一个有键categoryName
and Trending
,而第二个有键categoryName
and Comedy
。键的值categoryName
告诉我第二个键的名称。我如何使用 Decodable 来表达这一点?
json - 使用 Swift 4 的 Decodable 解码 Void
我有一个通用的 REST 请求:
是请求的T
返回类型,例如:
现在我想表达泛型类型必须符合,Decodable
以便我可以解码来自服务器的 JSON 响应:
这是有道理且有效的——直到我收到一个没有响应的请求,一个Request<Void>
. 编译器对此不满意:
编译器很快发现了我通过添加Decodable
一致性来解决这个问题的恶作剧:Void
让请求泛型而不是返回类型感觉是正确的。有没有办法让它与Void
返回类型一起工作?(例如,只是在服务器上创建一些东西而不返回任何东西的请求。)
json - 当键仅在运行时已知时展平 JSON
假设我们有一个如下的 JSON 结构(通常用于 Firebase 的实时数据库):
预期的解决方案:
使用Decodable
我想将其转换为 3 个元素的数组:
id属性对应于 json 对象的根字符串,例如:18348b9b-9a49-4e04-ac35-37e38a8db1e2
.
解决方法:
我已经尝试了几种方法,但如果不需要辅助实体(或使用可选)就无法获得 id 属性:
使用init(from: Decoder)
并不像在其他情况下那么简单,因为keyedContainer(,)
由于密钥未知而无法使用。
不Decodable
适合这些类型的情况吗?