问题标签 [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 - URL 未使用 Decodable Swift 4 协议正确解码
我从服务器收到这个 url 字符串:
值为:
http://site.se/wp-content/uploads/2012/09/Hidløgsma.jpg
使用 Swift 4 Decodable 协议失败并出现错误:
无效的 URL 字符串。
有没有办法让它与上面的字符串一起工作?
json - 我可以在 Swift 中声明一个名为“Type”的变量吗?
我使用别人的 API。它返回给我 JSON。像这样;
我定义了一个结构来解析 JSON,如下所示:
当然 xCode 给了我一个错误: 类型成员可能没有命名为“类型”,因为它会与“foo.Type”表达式冲突。
我没有编写 API。如果我更改变量Type的名称,我将无法读取该值。
我可以在不修改 API 的情况下使用 Decodable Struct 吗?
json - Swift 4 JSON decoding when type is only known at runtime
Is it possible with the Decodable
protocol in Swift 4 to decode a JSON object when the type to decode to is only known at runtime?
I have a registry of sorts which maps a String
identifier to the type we want to decode to, as below:
Am I on the right lines here or is there a better way?
ios - Swift 4 JSONDecoder 解码协议类型
以下代码无法编译:
它抛出错误:
Cannot invoke 'decode' with an argument list of type '(Foo.Type, from: Data)'
你们有什么想法吗?
ios - Swift 4 Decodable:给定的数据不是有效的 JSON
我正在尝试向本地服务器写入 POST 请求,这是我的功能:
这些是这里使用的结构:
它能够打印
但它一直显示这个错误:
会话错误:dataCorrupted(Swift.DecodingError.Context(codingPath:[],debugDescription:“给定的数据不是有效的JSON。”,基础错误:可选(错误域=NSCocoaErrorDomain代码=3840“JSON文本没有以数组或对象开头以及允许未设置片段的选项。" UserInfo={NSDebugDescription=JSON 文本未以数组或对象开头,以及允许未设置片段的选项。})))
为什么它不是一个有效的 JSON ???
这是我服务器的 API POST 请求文档:
我已经做了很多谷歌搜索,但被困在这里很长时间了!任何帮助表示赞赏!
json - 忽略 Codable 对象中的非 Codable 可选属性
符合Codable
协议时,我不能轻易跳过非 Codable 类的可选属性
在Ride
struct 中,我们想跳过属性的编码和解码,driver
而在解码时只保留它nil
:
在这种情况下,我得到一个编译错误
类型“驱动程序”不符合协议“可解码”
到目前为止,我提供的唯一解决方案是通过提供以下方法手动编码和解码:
还有另一种跳过可选属性的方法吗?使用更大的模型会容易得多。
json - 在 init 中解析 json,使用 Decodable 协议
我想在我的模型的 init 中解析 json 文件。我希望它获取 URL 并初始化所有存储的属性。喜欢:
init(from url: URL) { ... }
,
所以问题是我该怎么做?我试着这样做:
let info = try JSONDecoder().decode(Model.self, from: data)
,
但它只是创建了一个新对象,似乎是一个糟糕的决定。
谢谢。
swift - 在 Swift 4 中将属性观察器添加到可解码协议
我正在从 JSON 解析中检索 URL,然后我想将该 URL 转换为 UIImage。这是我当前的数据结构:
我试着做:
但是那个does not conform to protocol 'Decodable'
其他人有解决方案吗?
ios - 使用 Swift 4 Decodable 将字符串 JSON 响应转换为布尔值
我正在重构一些以前使用第三方 JSON 解析器的项目,并且遇到了一个返回布尔值作为字符串的愚蠢站点。
这是 JSON 响应中的相关片段:
我的解码结构如下所示:
如何将 JSON 响应中返回的字符串转换为 Bool 以匹配我在 Swift 4 中的结构?虽然这篇文章很有帮助,但我不知道如何将字符串响应转换为布尔值。
swift - 捕获模式更改回调签名
我正在尝试JSONDecoder
使用 Alamofire 解码来自我的服务器的 json 响应。当我用 a 解码响应时guard
,它可以正常工作。这种方法的副作用是,当解码实际失败时,我不知道问题出在哪里。
所以相反,我想使用 ado { } catch { }
但我无法弄清楚我应该如何在 AlamofireresponseJSON
回调中使用它。
这是我目前得到的:
然而,这段代码给我的是一个编译器错误.responseJSON { (response) -> Void in
。
从“(_) -> Void”类型的抛出函数到非抛出函数类型“(DataResponse) -> Void”的无效转换。
保护代码工作正常,如果我将其更改try
为 atry?
或强制展开,它会编译 - 我只是无法让我的 catch 处理实际错误。
如果我更改catch
块以使其不包含任何模式,则代码将编译。
这并没有给我任何我给我的东西guard
。我真的很想捕获操作遇到的错误decode
。我使用了错误的模式吗?为什么使用该DecodingError.dataCorrupted
模式似乎会改变回调签名?