问题标签 [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.
ios - 使用可编码快速发布请求
我想快速创建一个发布请求,但我对Encodable
协议感到困惑。以及如何创建它们。
以下是我要发布的数据:
我怎样才能用Encodable
or发布它JSONSerialization
?
swift - 将 Codable 对象的数组本身编码为 [String: Any]
我想发送Codable
对象数组。所以我创建了一个符合 Codable 协议的类:
当我需要向服务器发送数据时,我创建了一个类型为surveyResults [ResultAnswer]
,它是我的viewModel 中的计算属性。我正在使用 Alamofire,所以我必须将我的数组转换为[String: Any]?
类型。这是一段负责编码和发出发布请求的代码。这是我的视图模型的一部分。:
编码给了我奇怪的结果:
所以你可以猜到尝试序列化数据返回nil
。
我对解码可编码对象数组没有问题,但我不知道我在编码方面做错了什么。
swift - Codable 和 CodingKeys
我正在尝试实现与如何Codable
使用CodingKeys
枚举具有类似功能的协议。
使用Codable
and CodingKeys
,如果您没有在CodingKeys
枚举中为对象的每个属性实现 case Codable
,则会导致编译器错误,指出该对象不符合协议。
我查看了文档,我唯一能找到的与Codable
( Encodable
and Decodable
) 协议相关的是实现func encode(to encoder: Encoder)
andinit(from decoder: Decoder)
功能的要求。
我得到的最接近的是定义如下协议:
这要求实现者有一个Keys
符合 的属性CodingKey
,但它并不强制要求所有属性都有一个案例。此外,您不能Keys
像使用Codable
.
是否比通过 API 公开的内容更深层次的处理Codable
?CodingKeys
如果没有,有没有办法在CodingKeys
之外实现功能Codable
?
swift - 强制 swift 类的所有属性键和值小写
我需要将类的所有键及其值转换为小写。例如,
convertToLowerCase
我在扩展中添加的JSONEncoder.KeyEncodingStrategy
将键转换为小写的方法在哪里。
它打印 -{"city":"Toronto","firstname":"David","lastname":"Gill"}
我需要打印的是 -{"city":"toronto","firstname":"david","lastname":"gill"}
有人可以在这里帮忙吗?
json - 使用蛇形大小写转换的 JSON 编码会忽略 CodingKeys
我有以下发送到端点的结构:
无论我做什么,idleAlarm
都会在生成的 JSON 字符串中写为 idle_alarm。这应该是IdleAlarm
因为“对象”使用这个 API 是 PascalCased,只有字段应该是 snake_cased。Decodable
工作正常。
所有对象中的所有其他字段都是snake_case,所以如果我不使用snake_case,我需要为数百个字段添加CodingKeys。
swift - 如何将协议属性默认实现编码为字典
我想从具有默认实现属性的可编码结构中制作字典。
该结构实现了一个协议。该协议有两个变量。一个变量具有默认实现。
为此,我使用如何使用 Swift 的 Codable 编码到字典Encodable
中的扩展?:
因此,当我实例化结构并将其“编码”为字典时:
那么defaultValue
不包括:
但我需要的是(包括默认值):
swift - Swift 4 解码/编码通用数据结构
我有一个通用队列数据结构,它使用一个数组作为它的列表,我很难让队列符合可编码和可解码的要求。我有另一个使用队列的类,它也需要是可编码的,但除非它的成员变量是,否则它不能是娇惯的。
我尝试使队列符合可编码和可解码,对数据进行编码并将其保存为用户默认值,但这似乎不起作用,实际上我的 init(来自解码器)函数甚至因任何原因陷入无限循环。我真的可以使用一些帮助
//我的队列
任何类都应该能够将此队列添加为数据成员,当我实现队列时,我相信编码函数可以工作,但解码器会导致一些无限循环
ios - 使结构可编码/可解码而不仅仅是可编码,是否有任何性能优势?
对于要序列化的示例结构 Person
:
我们可以使它符合Encodable
,Decodable
或Codable
协议。我知道我们在Encodable
和之间的选择Decodable
取决于用例(例如,如果我们正在访问 API 并且不需要解码包含相同类型的响应),但我们也可以使其符合Codable
如果结构是都用于编码和解码。
如果我们需要将结构严格用于编码或解码,但不是两者兼而有之,那么从性能角度来看,仅使用 catch-allCodable
而不是指定Encodable
/Decodable
一致性是一个坏主意吗?
使用Codable
而不是指定Encodable
/的一个明显缺点Decodable
是另一个程序员可能会将结构误解为用于编码和解码,而实际上两者中只有一个发生。但是,如果我对性能非常感兴趣怎么办?
ios - 如何手动解码选定的键并使用 swift Decodable 进行自动解码?
这是我正在使用的代码,
在这里,transcodeId
由_transcode
或决定_transcoder
。但我希望id
和其余的键(不包括在这里)被自动解码。我该怎么做 ?