问题标签 [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.
swift4 - 有没有办法在 Swift 4 的可编码对象中插入额外的键?
正如问题所述:我有一个符合新Encodable
协议的结构,并希望在结构本身中插入不作为变量或常量存在的键和值。我当前的解决方法是将它们作为常量添加到结构中,其唯一目的是添加到生成的 JSON 输出中。有没有办法做到这一点func encode(to encoder: Encoder) throws { ... }
?
背景资料
我有一个相当大的 Swift 4 项目,它需要一个 JSON 输出来在项目本身之外生成统计信息和可视化,所以我几乎所有的结构、类和枚举都符合新Encodable
协议。输出已经在工作,但在某些方面可读性很差。特别是在一个描述光栅化工厂布局中的字段的结构中:
该字段具有包含以下情况的自定义位置(带有坐标x: Int
和y: Int
)和自定义内容:enum FieldType
Position
, FieldType
, Robot
,Workstation
和Field
本身已经实现Encodable
,但问题是我的字段的 JSON 输出如下所示:
正如您所看到的,在位置 (11, 6) 处除了空白字段之外还有其他内容,但不知道在我的模拟中只有工作站处于空闲状态,因此无法知道该字段包含什么内容。所以我尝试通过将 CodingKeys 定义为枚举来向我的工作站模型(机器人模型中的类比)添加一个"object"
带有值的键:"workstation"
"robot"
这导致我struct Workstation
不再符合Encodable
. 所以我找到的唯一解决方案是添加一个常量let object = "workstation"
,但这是一个常量,其唯一目的是添加到输出中,我想避免这种情况。
ios - 如何将 CodingKeys 用于符合 Codable 协议的枚举?
我有一个符合协议EmailVerificationStatus
的关联类型的枚举:String
Codable
我正在使用的 Web 服务以大写字母 ( UNVERIFIED
/ VERIFIED
) 发送这些情况。我如何使用CodingKeys
枚举来映射这种差异?像下面这样的东西不起作用:
swift - Swift 4 - Codable - 如何在解码时允许键的不同对象类型
我有一个 Swift 应用程序,我正在转换它以使用 Codable 协议(而不是 EVReflection,它发生了很大的变化,以至于我无法再让它工作)。当与应用服务器进行交易时,我的代码生成一个“ServerResponse”类的对象,其中包含许多变量——其中一个是“responseObject”——它可以是从用户到消息的任意数量的不同对象,或其他。因为 Codable 默认情况下不使用“decodeIfPresent”,所以我在某些事务期间遇到错误,并且必须覆盖 init(来自解码器:解码器)以防止这种情况。现在,我面临的挑战是如何让原始 JSON 字符串保持完整,以便稍后通过调用方法解码为正确的对象类型,或者进行一些其他类似的修复。底线:
如果有人有任何建议,我将不胜感激。如果有帮助,我会很乐意分享代码,但我认为不会,因为这个问题本质上是概念性的。
uiimage - 如何使 UIImage 符合 Codable?
Swift 4 有Codable,它很棒。但UIImage
默认不符合。我们怎么能做到这一点?
我试过singleValueContainer
和unkeyedContainer
我收到 2 个错误
- “必需”初始化程序必须直接在类“UIImage”中声明(而不是在扩展中)
- 不可失败的初始化程序不能委托给用“init?”编写的可失败初始化程序“init(data:)”
一种解决方法是使用包装器。但是还有其他方法吗?
swift4 - Swift 4 使用 Codable 解码 json
有人可以告诉我我做错了什么吗?我已经查看了这里的所有问题,比如从这里如何使用 Swift Decodable 协议解码嵌套的 JSON 结构?我找到了一个似乎正是我需要的Swift 4 Codable 解码 json。
我得到的错误是:
typeMismatch(Swift.Array, Swift.DecodingError.Context(codingPath: [], debugDescription: "期望解码 Array 但找到了一个字典。",底层错误: nil))
swift - 为什么 `decode(_:forKey:)` 会忽略它的第一个参数?
似乎decode(_forKey:)
忽略了它的第一个参数,而是依赖泛型参数来决定要解码的类型。如果是这种情况,第一个参数是什么?
swift - 使用 Decodable 进行 JSON 解析时 optional 和 decodeIfPresent 有什么区别?
我Codable
第一次使用 Swift 4 的协议,我无法理解decodeIfPresent
from的使用Decodable
。
在这里它建议它返回nil
,如果值不存在关联键。如果这是唯一的原因,那么它与可选属性有何不同,因为可选变量也设置为nil
如果响应中不存在值。
json - 如何解码类型取决于标签的值数组?
我有一个带有一组值的 JSON:
我想将此数组解码为struct
s 数组,其中特定类型取决于标签:
我怎么做?目前我有这个略显丑陋的包装:
接着:
有没有更好的办法?
swift - 使用字典/数组初始化符合 Codable 的对象
我的用例主要是使用字典创建一个对象:例如
我想避免编写自定义实现,并希望尽可能高效。
json - Swift 4 JSON Codable ids 作为键
我想将 Swift 4 的可编码功能与 json 一起使用,但某些键没有设置名称。而是有一个数组,它们是像
您在哪里看到 181 个 ID。有谁知道如何处理 181 以便我可以将其指定为密钥?数字可以是任何数字,并且每个数字都不同。
想要这样的东西
提前致谢。