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

struct - 如何在 Swift 4 中引用通用的可解码结构

我有一个我想重用的函数,并让它接受 Decocable 结构的参数。例如,这是我当前代码的简化(假设“MyDecodableStruct”是应用程序其他地方声明的可解码结构):

而不是说“MyDecodableStruct”,我希望它是我作为参数传入的任何可解码结构。像这样的东西:

我会这样称呼它

我无法弄清楚如何让它工作的语法。我得到的错误是

有关处理此问题的最佳方法的任何想法?

0 投票
2 回答
4619 浏览

ios - Swift 4 JSON 解码器

我知道其他问题已经涵盖了这一点,但我已经关注了它们,但我仍然感到困惑。这是我的 JSON 结构:

等等......但这与结构一样深。每个 JSON 响应中有多个“段”返回。在 Swift 我有这个代码。

这失败并抛出错误,但错误打印为 nil ..所以我不知道我错过了什么。dataAsString 按预期打印出 JSON,所以我知道“数据”很好。

0 投票
3 回答
3149 浏览

swift4 - Swift 4 Decodable - 将 JSON 对象解码为“数据”

我有以下数据结构:

这是我的解码课程:

我正在获取一组这样的对象,这就是我解码它的方式:

但是我在控制台中收到此错误:

typeMismatch(Swift.Array, Swift.DecodingError.Context(codingPath: [Foundation.(_JSONKey in _12768CA107A31EF2DCE034FD75B541C9)(stringValue: "Index 0", intValue: Optional(0)), Playground_Sources.UntypedObject.UntypedObjectKeys.data], debugDescription: "预期解码 Array 但找到了字典。”,基础错误:无))

所以问题是是否有可能将正确的 JSON 对象解码为Data类型化属性,如果是这样 - 我该如何实现呢?

0 投票
5 回答
3468 浏览

arrays - Swift 4 JSON 可解码多维和多类型数组

好的,这是我从服务器收到的 json 格式

现在我想将它解码到我的结构中,但仍然没有运气。

我在 URLSession 上的调用者方法看起来像这样

我得到的错误是

我知道数组中有一个 int 并且我只为值转换 String var values: [[String]]?(这个错误弹出的原因),但我根本不能在我的结构中使用任何多维数组或元组,因为它遵循可解码的协议。

我也无法将数据转换为字典,因为它会抛出错误“预期解码字典但找到数组”

关于解决这个问题的任何想法?我尝试在数据上转换字符串类型,但仍然没有运气......

p/s:如果所有的 json 格式都是字符串类型的,就没有问题,但是我没有更改它的权限,因为我是从 API 调用它的。

0 投票
1 回答
423 浏览

json - JSON解码器-带字符串的解码错误

在使用可解码协议在 Swift 4 中创建 DotA2 iOS 应用程序时,我遇到了这个错误。

keyNotFound(DotaPal.MatchPlayerDetail.CodingKeys.personaname, Swift.DecodingError.Context(codingPath: [DotaPal.MatchDetail.CodingKeys.players, Foundation.(_JSONKey in _12768CA107A31EF2DCE034FD75B541C9)(stringValue: "Index 0", intValue: Optional(0))] , debugDescription: "没有与 key personaname (\"personaname\") 关联的值。",底层错误: nil))

尽管我不知道为什么,但解码“personaname”似乎有问题。我过去使用过带有更复杂 json 的解码器,但在看了一会儿之后似乎找不到解决方案:/。

这是整个结构中涉及的结构以及试图解码的 json 的链接。 JSON 试图被解码

0 投票
1 回答
445 浏览

arrays - Swift4 - 数组的 JSON 可解码问题(不能下标值)

我正在使用 Swift 4 Decodable 解析天气 JSON,但数组数据存在问题。我想我可能对模型有点错误(因为有一堆可解码的结构),请帮忙。

来自天气 API 的 JSON 数据:

模型:

使用 JSONDecoder 解析 JSON 数据:

错误消息:无法使用“字符串”类型的索引为“数组”类型的值下标。

我怎样才能解决这个问题?如何解析天气数组元素?

0 投票
2 回答
1519 浏览

ios - 可编码对象将数组元素映射到字符串

我有一个(烦人的)情况,我的后端返回一个像这样的对象:

其中每个属性都是一个数组,其中包含一个字符串作为其第一个元素。在我的数据模型struct中,我可以将每个属性声明为一个数组,但这真的很难看。我希望我的模型是这样的:

但这当然会使编码/解码失败,因为类型不匹配。到目前为止,我使用ObjectMapper的库提供了一个Map对象和currentValue属性,我可以将我的属性声明为String类型,并在我的模型init方法中通过这个函数分配每个值:

但是现在我正在转换为Codable方法,我不知道如何进行这种映射。有任何想法吗?

0 投票
0 回答
270 浏览

ios - 可解码:过滤数组中解码失败的项目

由于人 B 是唯一格式错误的对象,如何确保我只过滤掉下面的人 B?

currentIndex关于状态的文档UnkeyedDecodingContainer

容器的当前解码索引(即下一个要解码的元素的索引)。在每次成功的解码调用后递增

似乎如果您尝试使用 过滤解码失败try?,它永远不会进入数组中的下一个元素。

但是如何做到这一点呢?请注意,JSON 的结构不能更改。

产生输出:

0 投票
1 回答
396 浏览

json - 使用可解码(嵌套数组)解析不同的 JSON

我正在开发来自 NiceHash api 的应用程序。我必须使用的 JSON 如下所示:

用于解析制作这样的结构

响应等于 nil,我不明白我做错了什么,我知道问题在于解析工人数组,因为如果我评论工人,响应等于一些有效数据。感谢帮助!

0 投票
1 回答
892 浏览

ios - 如何在 Swift 4 可编码协议中使用 JSON 字典类型对属性进行编码

好吧,我的问题很简单。我想做与此答案相同的操作,但要进行编码: How to decode a property with type of JSON dictionary in Swift 4 decodeable protocol

该解决方案适用于解码,但我还需要编码Dictionary<String, Any>

我不知道如何编写扩展KeyedEncodingContainer和其他扩展,以及编写什么方法。