问题标签 [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 回答
257 浏览

json - 使用可解码的 JSON 解析

我正在尝试使用可解码协议解析以下 JSON。我能够解析字符串值,例如roomName。但我无法正确映射/解析所有者、管理员、成员键。例如,使用下面的代码,我可以解析所有者/成员中的值是否以数组的形式出现。但在某些情况下,响应将以字符串值的形式出现(请参阅JSON 中的所有者键),但我无法映射字符串值。

注意:管理员、成员、所有者的值可以是字符串或数组(参见 JSON 中的所有者和成员键)

模型:

//所有者模型

//会员模型

0 投票
1 回答
162 浏览

json - 无法分配类型“[货币]?”的值 输入“[货币]?.Type”

我正在尝试解码具有可选数组的结构

编译错误1:

var Currencies = [Currency]? ==> 类型名称后的预期成员名称或构造函数调用

编译错误2:

self.Currencies = try productValues.decodeIfPresent([Currency].self,forKey:.Currencies)==> 无法分配类型“[货币]?”的值 输入“[货币]?.Type”

不知道这里缺少什么,有人可以指出吗?

0 投票
1 回答
545 浏览

ios - JSONDecoder 不解析数据

我正在尝试从此 URL 获取数据

我做了一个struct

我的视图控制器顶部

出于某种原因,我总是返回 JSON ERROR,尽管一切似乎都是正确的。

0 投票
6 回答
18030 浏览

ios - Swift Codable 将空 json 解码为 nil 或空对象

这是我的代码:

现在,调用服务器 API 我正在解析这样的响应(使用 Stuff 库来简化解析):

当我输入正确的密码时,我会得到这样的答案:

这很好,解析器工作正常。

提供错误密码时会给出以下答案:

在这种情况下,解析器失败。它应该将 data 设置为 nil,但相反,它会尝试将其解码为 LoginUserResponseData 对象。

我在使用改造的 Android 上使用相同的方法,它工作正常。我宁愿不想将所有字段都设为可选。

有没有办法让解析器将空 json {} 视为 nil?或者将 LoginUserResponseData 设置为非可选的,它只有默认值?我知道我可以为此创建一个自定义解析器,但是我有大量这样的请求,并且需要太多额外的工作。

0 投票
2 回答
2598 浏览

json - Swift Codable:解码具有相同根对象的不同项目数组

我目前正在尝试解码如下所示的 JSON:

这种特定类型的 JSON 的解码过程非常简单。我只需要这样的东西:

现在我面临的问题是服务器的每个响应都具有与上述 JSON 相同的结构,但具有不同的项目类型。所以有时是这样,但如果我调用 User 端点let items: [Item]也可能是这样。let items: [User]

因为如果我只需修改 items 数组就为每个端点编写上述 swift 代码,这将是不必要的代码重复,我创建了一个自定义解码器:

"items"如果仅包含单个对象而不包含数组,则解码器可以完美运行:

如果items是一个数组,我会收到以下错误:

typeMismatch(Swift.Dictionary, Swift.DecodingError.Context(codingPath: [__lldb_expr_151.KimaiAPIResponseKeys.result], debugDescription: "期望解码 Dictionary 但找到了一个数组。",底层错误: nil))

我只是不知道如何修改我的解码器以处理一系列项目。我使用 JSON 的工作版本和非工作版本创建了一个 Playground 文件。请看一下并尝试一下:Decodable.playground

谢谢您的帮助!

0 投票
1 回答
4898 浏览

swift - 如果数据嵌套在 Swift 中,我如何解码响应数据

我在解码响应数据时遇到问题。这是我的请求功能

和城市结构

这是响应数据,我想解码“项目”

0 投票
2 回答
50 浏览

swift - 无法从解码器获取字典

我需要获取整个字典作为键“内容”的字符串。我将它作为 nil 接收。我尝试使用 [String:Any] 抛出异常,无法确认任何可解码

在下面的 json 中,我需要将整个内容作为字符串获取。我尝试过使用 [String:Any] 但它崩溃了,因为它提到任何不能符合可解码。

0 投票
1 回答
6803 浏览

json - 在 SWIFT 4 中解析嵌套的 JSON

我目前正在 SWIFT 4 中使用 Decodable 解析 JSON。

JSON 格式如下:

我可以使用我的 Struct 轻松解析诸如 last_payment_ammount 或 last_payment_date 之类的内容:

我真正难以理解的是获取嵌套的东西。

例如,我如何使用“worker”变量获取例如可能放入数组的工作人员列表。或者解析一个工人的哈希值?

非常感谢

0 投票
2 回答
3922 浏览

ios - 致命错误:字典不符合 Decodable 因为 Any 不符合 Decodable

我正在尝试使用 swift 4 来解析本地 json 文件:

这是我正在使用的功能:

但我不断收到错误:

致命错误:Dictionary 不符合 Decodable,因为 Any 不符合 Decodable。

我尝试在此 stackoverflow 页面上使用“AnyDecodable”方法:How to decode a property with type of JSON dictionary in Swift 4 decodeable protocol 但它会跳转到“catch”语句: catch { print("Local JSON not loaded")使用时。有谁知道如何在 Swift 4 中解析这个 JSON 数据?

0 投票
0 回答
58 浏览

json - 在 Swift 4 中解析传入的 Json 数据

关于从服务器传入的 Json 数据,dataString打印成功如下,

我想将其转换为以下格式以使用基于我的 Struct 的对象。

但是,当我print scannedNetworks出现以下错误时

SWIFT代码;