问题标签 [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.
json - 如何将 Swift 4 编码的 JSON 写入文件?
如何将通过 Swift 4 Codable 协议编码的 JSON 对象写入文件?在 Swift 4 之前我使用过JSONSerialization.writeJSONObject
,但JSONSerialization.isValidJSONObject
现在返回false
创建的数据(或字符串)。一个例子:
这两种格式都无效JSONSerialization.isValidJSONObject()
:
数据不是 JSON 序列化的有效格式:
{"numOfTeeth":48,"hobbies":["Dancing","Swiming","Eating people"],"name":"Nancy","carnivorous":true}
数据不是 JSON 序列化的有效格式:可选(99 字节)
如何让它通过 JSON 验证,然后将其写入文件?
swift - Swift 4 解码简单的根级 json 值
根据 JSON 标准RFC 7159,这是有效的 json:
如何使用 swift4 的可解码将其解码为 Int?这不起作用
ios - 解码子类时忽略超类属性
我正在尝试制作继承的数据模型以便用JSONDecoder
.
我将此 JSON 用于FirstClass
:
这对于SecondClass
:
如果关键字在这种情况下不起作用,我怎样才能摆脱arrayOfInts
我的子类但让它在超类中?final
这里是游乐场。感谢您的回答!
json - 如何使用 Codable 协议快速构建 json 对象模型
我正在编写一个 REST Web 应用程序客户端,并使用如下所示的 JSON:
JSON1
但是 API 也可以给我这种 JSON
JSON2
所以现在在我的应用程序中,我创建了一个符合 Codable 协议的结构
这种架构有效,但在我看来它不是最好的或优雅的。你知道是否存在更好的方法吗?我是否应该使用 2 个不同的 json 模型,例如:
我是 REST API 客户端的新手,这种 JSON 似乎没有使用好的架构。
ios - Swift 4 Decodable,DecodingError:没有与键关联的值
我正在尝试使用 Swift 4 Codable 功能,但陷入了这种情况:
这是我的结构。
这是我用于发布请求的功能。在 print("NewPost:",newPost) 中,它打印
这看起来与我看到的其他示例非常相似,但是通过 catch 总是有一个会话错误
我只是不明白这是怎么出现的!我正在使用完全相同的结构,它说这个没有密钥?!谢谢你的帮助!
ios - Swift 4 Decodable:给定的数据不是有效的 JSON
我正在尝试向本地服务器写入 POST 请求,这是我的功能:
这些是这里使用的结构:
它能够打印
但它一直显示这个错误:
会话错误:dataCorrupted(Swift.DecodingError.Context(codingPath:[],debugDescription:“给定的数据不是有效的JSON。”,基础错误:可选(错误域=NSCocoaErrorDomain代码=3840“JSON文本没有以数组或对象开头以及允许未设置片段的选项。" UserInfo={NSDebugDescription=JSON 文本未以数组或对象开头,以及允许未设置片段的选项。})))
为什么它不是一个有效的 JSON ???
这是我服务器的 API POST 请求文档:
我已经做了很多谷歌搜索,但被困在这里很长时间了!任何帮助表示赞赏!
swift - 在 Swift 中 JSONDecoder 解码一个巨大的对象时更新进度条
我正在像这样解码几千兆字节的 JSON 编码数据
content
纯文本在哪里。现在,此操作可能需要几分钟,具体取决于 的大小content
,我想展示一些进展。这是一个命令行程序,所以即使是定期更新长度table
也足够了。问题是我没有看到类似回调或类似的东西。Timer
我尝试过这样一个相当尴尬的
但这只运行一次——是因为解码器阻塞了主线程而我在同一个线程中运行计时器吗?我对 GCD 有点陌生,所以我不知道如何使用 a 来做DispatchQueue
这个。
有任何想法吗?
json - 忽略 Codable 对象中的非 Codable 可选属性
符合Codable
协议时,我不能轻易跳过非 Codable 类的可选属性
在Ride
struct 中,我们想跳过属性的编码和解码,driver
而在解码时只保留它nil
:
在这种情况下,我得到一个编译错误
类型“驱动程序”不符合协议“可解码”
到目前为止,我提供的唯一解决方案是通过提供以下方法手动编码和解码:
还有另一种跳过可选属性的方法吗?使用更大的模型会容易得多。
json - 在 Swift 4 中使用 Decodable 和 CodingKeys 解析 JSON
我正在尝试解析从 URL 检索的大型 JSON 字符串。我用来测试的 JSON 如下:
我有几个数据结构可以将数据放入:
然后我打印出这样的信息:
它可以成功打印除类型之外的所有信息。这给了我一系列流派,但我无法
book.genres.name
访问该名称。我必须使用:
book.genres[0]
它只给我第一个索引的结果。
有没有办法可以在我的BookCollection
扩展中完善我的 JSON 解码然后使用book.genres.name
?
谢谢
swift - Swift 4 中 Codable 协议的自定义字典编码器和解码器
如果我有一个符合Codable
协议的结构,如下所示:
如何创建一个编码器和一个解码器,将其编码/解码到/从这样的类型实例Dictionary<String, Any?>
?
注意:我知道在将结果转换为字典对象之前可以使用JSONEncoder
andJSONDecoder
类,但出于效率原因,我不希望这样做。
Swift 标准库带有开箱即用的JSONEncoder
和JSONDecoder
以及PListEncoder
和类,它们分别符合和协议。PListDecoder
Encoder
Decoder
我的问题是我不知道如何为我的自定义编码器和解码器类实现这些协议:
由于 Swift 是开源的,因此可以在标准库中查看JSONEncoder和PListEncoder类的源代码,但是由于缺少文档,除了一些注释之外,源文件非常庞大且难以理解。