问题标签 [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.
swift4 - 在 Swift 4 中使用带有 Codable 的 Anyobject
我正在尝试在 swift 4 中使用 Codable 解析 JSON。我担心的是
我希望上述实体是可编码的,但“记录”不能是特定实体,因为这是我将从 API 接收的基本实体。在我解析了 status 和 statusDescription 之后,我才能指定将记录哪个实体
例如,我正在调用 API 以获取客户详细信息,我收到状态为 200 即成功,然后我会将记录解析为客户实体
json - 处理包含多种类型的 JSON 数组 - Swift 4 Decodable
我正在尝试使用 Swift 4 Decodable 来解析包含两种不同类型对象的数组。数据看起来像这样,included
数组是同时包含Member
和ImageMedium
对象的数组:
我已经尝试了很多不同的方法来使用 Decodable 干净地解决这个问题,但到目前为止,唯一对我有用的是制作一个Included
包含两个对象的所有属性作为可选的结构,如下所示:
这可以通过实现一种方法来根据其属性从结构中创建对象来实现Member
,但它显然不太理想。我希望有一种方法可以使用 custom 来实现这一点,但我还没有让它工作。有任何想法吗?ImageMedium
Included
type
init(from decoder: Decoder)
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!
)以消除对初始化程序的要求。但是有没有别的办法?这似乎是一个简单的问题,但解决它使它变得非常混乱,我不喜欢。另外,当我使用这种方法从文件中保存/加载时,似乎没有保存数据
ios - Swift Codable:如何将顶级数据编码到嵌套容器中
我的应用程序使用返回 JSON 的服务器,如下所示:
如您所见,特定于 URL 的信息与通用字典存在于同一字典中user
。
目标:
- 将此 JSON 解码为类/结构。
- 因为
user
很常见,所以我希望它位于顶级类/结构中。
- 因为
- 编码为新格式(例如 plist)。
- 我需要保留原始结构。(即
data
从顶级user
信息和子对象的信息重新创建字典)
- 我需要保留原始结构。(即
问题:
重新编码数据时,我无法将user
字典(来自顶级对象)和特定于 URL 的数据(来自子对象)写入编码器。
要么user
覆盖其他数据,要么覆盖其他数据user
。我不知道如何将它们结合起来。
这是我到目前为止所拥有的:
例子:
在下面的示例中,重新编码的 plist 不包含order_count
,因为它被包含 的字典覆盖user
。
swift - 使实体关系可编码时出错
我试图让一个简单的 NSManagedObject 类符合 Encodable 以便我可以轻松地将其编码为 JSON。
我有一个名为 TestObject 的实体,它与名为 Device 的实体具有一对多的关系。
一切正常,直到我尝试编码一个 NSSet (多关系)。
我从编译器收到的错误是
这个编译器告诉我什么,我如何编码我的对象及其关系?
core-data - 使实体关系可编码/可解码时出错
如何在使用coredata NSManagedObject映射时在swift4编码中编码/解码NSOrderedSet变量?
它给出了错误:编译器给出了这个错误
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 类型。
swift - 为什么不能在函数中使用协议`Encodable`作为类型
我正在尝试通过符合Encodable
协议的编码模型获取数据。但它未能encode
像下面的代码那样调用 func:
但在另一个演示中,它运行良好,为什么呢?
dictionary - 在 Swift 4 中使用 JSONEncoder 将 [String: Encodable] 字典编码为 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
协议的情况下完成它。
ios - 将 Codable/Encodable 快速转换为 JSON 对象
最近我加入了一个项目并从符合我想出的这个扩展的类型Codable
中获取一个对象,JSON
Encodable
这很好用,但有没有更好的方法来达到同样的效果?