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

ios - 从可编码结构中获取错误消息

我正在解码一个 JSON 结构,如果它无法解码,此时在我的错误检查中,这意味着服务器响应中缺少一个字段,我想向用户显示该字段。

解码此结构时:

这里

如果没有字段 .data,我想在 catch 块中的 responseObject.message 中返回消息。但是我不允许将响应重新解码到这个结构中。

当第一次解码失败时,我应该如何尝试获取消息。谢谢

0 投票
1 回答
77 浏览

json - Swift 4 使用“ - ”字母解码 json

swift 4 Decodable 协议如何与“ - ”字母一起使用?例如:

在我的 Swift 课程中:

不知道怎么改class,但是json不能改...

0 投票
1 回答
590 浏览

json - 用 qoutes 包装的 Swift 4 Codable 解码数组

来自 API 的格式非常糟糕的 json 响应:

我需要将这个“形状”键解码到我的自定义结构中,这似乎没什么大不了的,但我有引号包裹着数组"[]"

所以,我有什么:

合理地有错误

而且这个电话有效(仅用于测试目的):

并有这个输出:

所以有什么方法可以将这个字符串样式包装的 json 数组解码为 Swift 数组Codable

我设法做了一些解决方法,它有效,但它似乎根本不是一个好的解决方案。将在此处发布,但问题“是否有任何方法可以正常使用 Codable 实现此功能”仍处于打开状态

0 投票
1 回答
1034 浏览

json - 将 swift 4 可解码协议与 RxSwift 一起使用

我最近尝试使用 Decodable 协议将 JSON 解析为模型,并且我已经成功地做到了。但现在我想使用 RxSwift 实现双向绑定。为此,我需要声明“变量<>”类型的变量。这是我模型中的一个片段:

现在,如果我将“批处理完成”从 String() 更改为 Variable,init() 方法会引发错误:

进行这些更改,您将收到错误消息。

0 投票
0 回答
860 浏览

swift - JSONEncoder 和 PropertyListEncoder 不符合 Encoder?

我正在尝试编写一个包装给定/的Encoder/对。这个包装器的目标是成功处理循环引用(既不做也不做),并将实际的编码/解码委托给被包装的编码器。DecoderEncoderDecoderJSONEncoderPropertyListEncoder

我惊讶地发现既不JSONEncoder也不PropertyListEncoder符合Encoder,同样,他们的Decoder同行也不符合Decoder

这似乎很奇怪。如果这两种类型不符合,那么Encoder协议的意义何在?查看源代码,我可以看到内部_JSONEncoder符合,但它是fileprivate.

那么没有希望了吗?真的没有办法笼统地包装一个Encoderlike JSONENcoderorPropertyListEncoder吗?

0 投票
0 回答
3363 浏览

ios - Swift 4 JSON 值为空

我在优雅地处理此错误时遇到问题debugDescription: "Expected String value but found null instead." 我知道在符合 的结构中Codable,我的存储属性需要声明为可选字符串,正如我在这篇文章中所读到的

我试过了,仍然出现错误。我在那篇文章中还读到,我还可以自定义解码器以将 nil 替换为空字符串。我不知道如何诚实地做到这一点。

这是我的代码:

由于我正在使用电影 api,因此某些电影的posterPathin为空。DiscoverResults如果需要 JSON 本身,我将编辑该帖子。

0 投票
2 回答
1821 浏览

swift - 可解码和枚举值

解码对象时枚举值不存在的情况应该如何处理?例如,我将如何处理下面示例中评级类型为“可怕”的情况?如果不存在任何值,有没有办法设置默认值?

0 投票
1 回答
7844 浏览

swift - Swift Init 不符合预期的“解码器”类型

目前,我有一个符合 Codable 的结构:

当我尝试使用以下内容初始化对象时:

我收到以下错误:

如何解决此问题并正确初始化结构?

0 投票
0 回答
407 浏览

realm - Realm 中的 Swift 4 可解码和列表持久性

将项目迁移到 swift 4 后,我开始使用 Decodable 将对象的序列化从 JSON 迁移到 Realm Object。我的对象内部有一个列表,该列表也在我的init(from decoder: Decoder)方法中进行了初始化。在代码中:

序列化后检查对象,一切都很好。所有数据都正确序列化。然后稍后在网络层中,新序列化的对象被持久化在领域中:

当我从领域重新获取对象时:

结果是一个 MyObj 实例,但 fooList 为空。

显然我做错了什么,但是什么?:D

0 投票
2 回答
3786 浏览

inheritance - 可编码类的继承

我正在使用 Swift 4 和 Xcode 9.2 编写程序。我在编写可编码类(确切地说是类,而不是结构)时遇到了困难。当我试图从另一个类继承一个类时,JSONEncoder 不会从子类(子类)中获取所有属性。请看这个:

它会打印这个:{"a":"a","b":"b"}

但我需要这个:{"a":"a","b":"b","c":"c"}

看起来c阶级的财产AdditionalData只是不知何故丢失了。

所以问题是:如果我有使用协议 Encodable 签名的类,如何正确地制作子类(此类的子类,继承)类?

我将感谢任何帮助或建议。