问题标签 [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 投票
0 回答
1501 浏览

ios - URL 未使用 Decodable Swift 4 协议正确解码

我从服务器收到这个 url 字符串:

值为:

http://site.se/wp-content/uploads/2012/09/Hidløgsma.jpg

使用 Swift 4 Decodable 协议失败并出现错误:

无效的 URL 字符串。

有没有办法让它与上面的字符串一起工作?

0 投票
1 回答
1010 浏览

json - 我可以在 Swift 中声明一个名为“Type”的变量吗?

我使用别人的 API。它返回给我 JSON。像这样;

我定义了一个结构来解析 JSON,如下所示:

当然 xCode 给了我一个错误: 类型成员可能没有命名为“类型”,因为它会与“foo.Type”表达式冲突。

我没有编写 API。如果我更改变量Type的名称,我将无法读取该值。

我可以在不修改 API 的情况下使用 Decodable Struct 吗?

0 投票
2 回答
1162 浏览

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?

0 投票
2 回答
3591 浏览

ios - Swift 4 JSONDecoder 解码协议类型

以下代码无法编译:

它抛出错误: Cannot invoke 'decode' with an argument list of type '(Foo.Type, from: Data)'

你们有什么想法吗?

0 投票
1 回答
21660 浏览

ios - Swift 4 Decodable:给定的数据不是有效的 JSON

我正在尝试向本地服务器写入 POST 请求,这是我的功能:

这些是这里使用的结构:

它能够打印

但它一直显示这个错误:

会话错误:dataCorrupted(Swift.DecodingError.Context(codingPath:[],debugDescription:“给定的数据不是有效的JSON。”,基础错误:可选(错误域=NSCocoaErrorDomain代码=3840“JSON文本没有以数组或对象开头以及允许未设置片段的选项。" UserInfo={NSDebugDescription=JSON 文本未以数组或对象开头,以及允许未设置片段的选项。})))

为什么它不是一个有效的 JSON ???

这是我服务器的 API POST 请求文档:

我已经做了很多谷歌搜索,但被困在这里很长时间了!任何帮助表示赞赏!

0 投票
1 回答
9005 浏览

json - 忽略 Codable 对象中的非 Codable 可选属性

符合Codable协议时,我不能轻易跳过非 Codable 类的可选属性

Ridestruct 中,我们想跳过属性的编码解码driver而在解码时只保留它nil

在这种情况下,我得到一个编译错误

类型“驱动程序”不符合协议“可解码”

到目前为止,我提供的唯一解决方案是通过提供以下方法手动编码和解码:

还有另一种跳过可选属性的方法吗?使用更大的模型会容易得多。

0 投票
1 回答
399 浏览

json - 在 init 中解析 json,使用 Decodable 协议

我想在我的模型的 init 中解析 json 文件。我希望它获取 URL 并初始化所有存储的属性。喜欢:

init(from url: URL) { ... },

所以问题是我该怎么做?我试着这样做:

let info = try JSONDecoder().decode(Model.self, from: data),

但它只是创建了一个新对象,似乎是一个糟糕的决定。

谢谢。

0 投票
1 回答
820 浏览

swift - 在 Swift 4 中将属性观察器添加到可解码协议

我正在从 JSON 解析中检索 URL,然后我想将该 URL 转换为 UIImage。这是我当前的数据结构:

我试着做:

但是那个does not conform to protocol 'Decodable'

其他人有解决方案吗?

0 投票
2 回答
3306 浏览

ios - 使用 Swift 4 Decodable 将字符串 JSON 响应转换为布尔值

我正在重构一些以前使用第三方 JSON 解析器的项目,并且遇到了一个返回布尔值作为字符串的愚蠢站点。

这是 JSON 响应中的相关片段:

我的解码结构如下所示:

如何将 JSON 响应中返回的字符串转换为 Bool 以匹配我在 Swift 4 中的结构?虽然这篇文章很有帮助,但我不知道如何将字符串响应转换为布尔值。

0 投票
1 回答
225 浏览

swift - 捕获模式更改回调签名

我正在尝试JSONDecoder使用 Alamofire 解码来自我的服务器的 json 响应。当我用 a 解码响应时guard,它可以正常工作。这种方法的副作用是,当解码实际失败时,我不知道问题出在哪里。

所以相反,我想使用 ado { } catch { }但我无法弄清楚我应该如何在 AlamofireresponseJSON回调中使用它。

这是我目前得到的:

然而,这段代码给我的是一个编译器错误.responseJSON { (response) -> Void in

从“(_) -> Void”类型的抛出函数到非抛出函数类型“(DataResponse) -> Void”的无效转换。

保护代码工作正常,如果我将其更改try为 atry?或强制展开,它会编译 - 我只是无法让我的 catch 处理实际错误。

如果我更改catch块以使其不包含任何模式,则代码将编译。

这并没有给我任何我给我的东西guard。我真的很想捕获操作遇到的错误decode。我使用了错误的模式吗?为什么使用该DecodingError.dataCorrupted模式似乎会改变回调签名?