问题标签 [encodable]

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 投票
2 回答
3274 浏览

swift4 - 在 Swift 4 中使用带有 Codable 的 Anyobject

我正在尝试在 swift 4 中使用 Codable 解析 JSON。我担心的是

我希望上述实体是可编码的,但“记录”不能是特定实体,因为这是我将从 API 接收的基本实体。在我解析了 status 和 statusDescription 之后,我才能指定将记录哪个实体

例如,我正在调用 API 以获取客户详细信息,我收到状态为 200 即成功,然后我会将记录解析为客户实体

0 投票
3 回答
6368 浏览

json - 处理包含多种类型的 JSON 数组 - Swift 4 Decodable

我正在尝试使用 Swift 4 Decodable 来解析包含两种不同类型对象的数组。数据看起来像这样,included数组是同时包含MemberImageMedium对象的数组:

我已经尝试了很多不同的方法来使用 Decodable 干净地解决这个问题,但到目前为止,唯一对我有用的是制作一个Included包含两个对象的所有属性作为可选的结构,如下所示:

这可以通过实现一种方法来根据其属性从结构中创建对象来实现Member,但它显然不太理想。我希望有一种方法可以使用 custom 来实现这一点,但我还没有让它工作。有任何想法吗?ImageMediumIncludedtypeinit(from decoder: Decoder)

0 投票
2 回答
3153 浏览

swift - 使协议可编码并将其存储在数组中

我有 Animal 协议,其中包含 2 个符合它的结构和一个存储 Animals 列表的 Farm 结构。然后,我使它们都符合 Codable 以将其存储在文件中,但它会引发错误cannot automatically synthesize 'Encodable' because '[Animal]' does not conform to 'Encodable'

我理解为什么会发生这种情况,但我找不到好的解决方案。如何使数组仅接受 Codable 和 Animal,而不将 Animal 标记为 Codable,这样就不会发生此问题,例如var animals = [Codable & Animal]?(或任何其他解决方法)。谢谢

--edit-- 当我将它们更改为一个类时,它看起来像这样:

如果我没有其他属性,它会起作用,但是一旦我添加了一个,我就需要引入一个初始化程序,然后我需要从解码器初始化程序中包含初始化程序,它删除了 Codable 提供的自动转换。因此,要么我为我扩展的每个类手动执行此操作,要么我可以强制转换变量(如var beakLength: Int!)以消除对初始化程序的要求。但是有没有别的办法?这似乎是一个简单的问题,但解决它使它变得非常混乱,我不喜欢。另外,当我使用这种方法从文件中保存/加载时,似乎没有保存数据

0 投票
2 回答
6183 浏览

ios - Swift Codable:如何将顶级数据编码到嵌套容器中

我的应用程序使用返回 JSON 的服务器,如下所示:

如您所见,特定于 URL 的信息与通用字典存在于同一字典中user

目标:

  1. 将此 JSON 解码为类/结构。
    • 因为user很常见,所以我希望它位于顶级类/结构中。
  2. 编码为新格式(例如 plist)。
    • 我需要保留原始结构。(即data从顶级user信息和子对象的信息重新创建字典)

问题:

重新编码数据时,我无法将user字典(来自顶级对象)和特定于 URL 的数据(来自子对象)写入编码器。

要么user覆盖其他数据,要么覆盖其他数据user。我不知道如何将它们结合起来。

这是我到目前为止所拥有的:

例子:

在下面的示例中,重新编码的 plist 不包含order_count,因为它被包含 的字典覆盖user

0 投票
0 回答
83 浏览

swift - 使实体关系可编码时出错

我试图让一个简单的 NSManagedObject 类符合 Encodable 以便我可以轻松地将其编码为 JSON。

我有一个名为 TestObject 的实体,它与名为 Device 的实体具有一对多的关系。

一切正常,直到我尝试编码一个 NSSet (多关系)。

我从编译器收到的错误是

这个编译器告诉我什么,我如何编码我的对象及其关系?

0 投票
2 回答
664 浏览

core-data - 使实体关系可编码/可解码时出错

如何在使用coredata NSManagedObject映射时在swift4编码中编码/解码NSOrderedSet变量?

它给出了错误:编译器给出了这个错误

0 投票
1 回答
281 浏览

swift - 将 JSON 编码器与 Codable 类型的计算变量一起使用

凭借我的新手 swift 技能,我正在努力找出正确的 swift 语法来让这个游乐场工作。取决于我如何尝试解决它,我要么得到

无法使用类型为“(可编码)”的参数列表调用“编码”

这类似于这个问题中解决的问题 Using JSON Encoder to encoding a variable with Codable as type or I get

' (T) -> ()' 要求 'Encodable' 符合 'Encodable'

我真的很感激有解释的解决方案

编辑 为了提供更多上下文,我在这里尝试实现的模式是用于中间件路由器。根据应用程序中的操作,路由器将构建网络请求。codableParam 的目的是为用例提供一致的结构。因此,所有情况都将返回 nil 或 Codable 类型。

0 投票
5 回答
13062 浏览

swift - 为什么不能在函数中使用协议`Encodable`作为类型

我正在尝试通过符合Encodable协议的编码模型获取数据。但它未能encode像下面的代码那样调用 func:

但在另一个演示中,它运行良好,为什么呢?

0 投票
2 回答
3689 浏览

dictionary - 在 Swift 4 中使用 JSONEncoder 将 [String: E​​ncodable] 字典编码为 JSON

我只是好奇如何将带有String键和Encodable值的字典编码为 JSON。

例如:

这里的键dict都是 type String,但是值的类型不同。

但是,JSON 中允许所有这些类型。

我想知道是否有一种方法可以JSONEncoder在 Swift 4 中使用将其编码dict为 JSON Data

我确实知道还有其他方法可以不使用JSONEncoder来实现这一点,但我只是想知道是否JSONEncoder能够管理这一点。

Dictionary确实有一个扩展func encode(to encoder: Encoder) throws名,但这仅适用于约束Key: Encodable, Key: Hashable, Value: Encodable,而对于我们的dict,它需要约束Key: Encodable, Key: Hashable, Value == Encodable

struct这个就足够了JSONEncoder

但是,我很想知道是否可以在不指定具体类型而只指定Encodable协议的情况下完成它。

0 投票
1 回答
7200 浏览

ios - 将 Codable/Encodable 快速转换为 JSON 对象

最近我加入了一个项目并从符合我想出的这个扩展的类型Codable中获取一个对象,JSONEncodable

这很好用,但有没有更好的方法来达到同样的效果?