问题标签 [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.

0 投票
1 回答
1097 浏览

swift4 - 在 swift4 中使类符合可编码协议

使结构符合 Codable (Encodable & Decodable) 协议非常容易:只需声明它。但是,如果我想让类符合 Codable,我是否必须编写所有锅炉代码(CodingEnum、init(来自解码器:解码器)、编码(到编码器:编码器)等)?

0 投票
16 回答
87136 浏览

arrays - 如果单元素解码失败,Swift JSONDecode 解码数组将失败

在使用 Swift4 和 Codable 协议时,我遇到了以下问题 - 看起来没有办法允许JSONDecoder跳过数组中的元素。例如,我有以下 JSON:

还有一个Codable结构:

解码此 json 时

结果products为空。这是意料之中的,因为 JSON 中的第二个对象没有"points"键,而在structpoints中不是可选的。GroceryProduct

问题是如何允许JSONDecoder“跳过”无效对象?

0 投票
1 回答
912 浏览

swift - 使用 Swift 4 的可解码协议进行嵌套的 JSON 服务器响应

我正在尝试实现 Swift 4 的新 Decodable 协议并且很难接近它。

这是我的 JSON 服务器响应:

data解码响应部分的最佳方法是什么?另外,如果data突然是一个array而不是一个对象会发生什么,我怎样才能支持这两种数据类型?

非常感谢 :)

0 投票
0 回答
179 浏览

generics - 在通用 Codables 上使用 JSONDecoder 时的循环元数据依赖关系

Swift 4 的 Foundation 库现在有一个内置的 JSON 解析器。它运行良好,除了我在以特定方式使用它时遇到的问题。如果正在解码的对象在另一个结构中被引用为泛型(下面的示例),则解码器会生成运行时错误:

GenericCache(0x106a31830):检测到循环元数据依赖,正在中止

这是从服务返回的示例 JSON 字符串:

以下是两个对应的 Swift 4 数据模型:

鉴于上述示例,此代码将触发运行时错误:

这是一个演示上述代码的项目:

https://github.com/UberNick/CodeableGenericBug

我想知道 GenericWrapper 使用的嵌套结构是否有问题。许多使用 Codable 的指南在他们的示例中使用了这些指南。当内部结构的变量定义“attributes:T”被诸如“attributes:Foo”之类的具体类型替换时,嵌套结构确实起作用。当内部结构(GenericWrapperData)在外部定义时,它也可以工作。这些工作案例也在上面链接的示例项目中。

我的问题是为什么运行时错误?这是框架问题还是代码有问题?

0 投票
1 回答
1541 浏览

ios - 斯威夫特:JSONEcoder EXC_BAD_ACCESS

我想在我的 Swift 应用程序中编码和解码一些对象。我有以下 2 节课。

这是代码,我如何尝试对对象进行编码。

我认为问题在于,我尝试对子类 ConsumptionTile 的对象进行编码,但数组的类型为 [Tile]。但我不知道如何解决这个问题。我必须将所有 Tile 类编码为一个数据对象。以后会有更多的子类,而不仅仅是 ConsumptionTile。

我在运行时遇到的错误只是 try jsonEncoder.encode(defaultTiles) 行上的一个断点,带有消息 Thread 1: EXC_BAD_ACCESS (code=1, address=0x8)

我希望有人能帮帮忙。谢谢!

0 投票
1 回答
523 浏览

json - 您如何设计一个可以是空字符串或 int 的可编码 JSON 字段

如何处理来自 JSON 的可编码结构的字段,该字段可以是空字符串或 int?我尝试使用任何但不符合可编码的数据类型。我认为如果它没有值,那么它会返回一个空字符串,否则,它会返回一个 int。我正在使用 Swift 4 和 XCode 9。提前致谢

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 投票
4 回答
12907 浏览

swift - 如何在 Swift 中使用 Codable 转换带有可选小数秒的日期字符串?

我正在用 Swift 的 Codable 替换我的旧 JSON 解析代码,并且遇到了一些障碍。我想这不是一个可编码的问题,而是一个 DateFormatter 问题。

从结构开始

和一个json字符串

现在让我们解码

但是,如果我们更改日期以使其具有小数秒,例如:

现在它坏了。日期有时会以小数秒返回,有时则不会。我用来解决它的方法是在我的映射代码中,我有一个转换函数,它尝试使用和不使用小数秒的 dateFormats。但是,我不太确定如何使用 Codable 来处理它。有什么建议么?

0 投票
2 回答
1955 浏览

json - 解析无效的 JSON Swift 4

我的 Json 看起来像这样:

我一直在尝试使用 Swift4 Codable 协议来解析 JSON,并使用它取得了很好的效果,但对于我的生活,我无法打破这种结构。外部data =使其无效 JSON,但在尝试将数据传递给 JSONDecoder 之前,我似乎找不到任何修改数据的方法。

有什么方法可以将数据作为字符串接收,这样我就可以删除最外层的字符并解析剩余的 JSON 对象?

0 投票
1 回答
676 浏览

swift4 - 为什么#Codable#不能在根类被Codable协议确认的子类中工作

[Xcode 9,斯威夫特 4]

我测试以下代码:

为什么输出是-1,而不是1?