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

ios - 使用可编码快速发布请求

我想快速创建一个发布请求,但我对Encodable协议感到困惑。以及如何创建它们。

以下是我要发布的数据:

我怎样才能用Encodableor发布它JSONSerialization

0 投票
0 回答
555 浏览

swift - 将 Codable 对象的数组本身编码为 [String: Any]

我想发送Codable对象数组。所以我创建了一个符合 Codable 协议的类:

当我需要向服务器发送数据时,我创建了一个类型为surveyResults [ResultAnswer],它是我的viewModel 中的计算属性。我正在使用 Alamofire,所以我必须将我的数组转换为[String: Any]?类型。这是一段负责编码和发出发布请求的代码。这是我的视图模型的一部分。:

编码给了我奇怪的结果:

所以你可以猜到尝试序列化数据返回nil

我对解码可编码对象数组没有问题,但我不知道我在编码方面做错了什么。

0 投票
1 回答
1829 浏览

swift - Codable 和 CodingKeys

我正在尝试实现与如何Codable使用CodingKeys枚举具有类似功能的协议。

使用Codableand CodingKeys,如果您没有在CodingKeys枚举中为对象的每个属性实现 case Codable,则会导致编译器错误,指出该对象不符合协议。

我查看了文档,我唯一能找到的与Codable( Encodableand Decodable) 协议相关的是实现func encode(to encoder: Encoder)andinit(from decoder: Decoder)功能的要求。

我得到的最接近的是定义如下协议:

这要求实现者有一个Keys符合 的属性CodingKey,但它并不强制要求所有属性都有一个案例。此外,您不能Keys像使用Codable.

是否比通过 API 公开的内容更深层次的处理CodableCodingKeys

如果没有,有没有办法在CodingKeys之外实现功能Codable

0 投票
3 回答
424 浏览

swift - 强制 swift 类的所有属性键和值小写

我需要将类的所有键及其值转换为小写。例如,

convertToLowerCase我在扩展中添加的JSONEncoder.KeyEncodingStrategy将键转换为小写的方法在哪里。

它打印 -{"city":"Toronto","firstname":"David","lastname":"Gill"}

我需要打印的是 -{"city":"toronto","firstname":"david","lastname":"gill"}

有人可以在这里帮忙吗?

0 投票
1 回答
232 浏览

json - 使用蛇形大小写转换的 JSON 编码会忽略 CodingKeys

我有以下发送到端点的结构:

无论我做什么,idleAlarm都会在生成的 JSON 字符串中写为 idle_alarm。这应该是IdleAlarm因为“对象”使用这个 API 是 PascalCased,只有字段应该是 snake_cased。Decodable工作正常。

所有对象中的所有其他字段都是snake_case,所以如果我不使用snake_case,我需要为数百个字段添加CodingKeys。

0 投票
3 回答
351 浏览

swift - 如何将协议属性默认实现编码为字典

我想从具有默认实现属性的可编码结构中制作字典。

该结构实现了一个协议。该协议有两个变量。一个变量具有默认实现。

为此,我使用如何使用 Swift 的 Codable 编码到字典Encodable中的扩展?:

因此,当我实例化结构并将其“编码”为字典时:

那么defaultValue不包括:

但我需要的是(包括默认值):

0 投票
2 回答
389 浏览

swift - Swift 4 解码/编码通用数据结构

我有一个通用队列数据结构,它使用一个数组作为它的列表,我很难让队列符合可编码和可解码的要求。我有另一个使用队列的类,它也需要是可编码的,但除非它的成员变量是,否则它不能是娇惯的。

我尝试使队列符合可编码和可解码,对数据进行编码并将其保存为用户默认值,但这似乎不起作用,实际上我的 init(来自解码器)函数甚至因任何原因陷入无限循环。我真的可以使用一些帮助

//我的队列

任何类都应该能够将此队列添加为数据成员,当我实现队列时,我相信编码函数可以工作,但解码器会导致一些无限循环

0 投票
1 回答
2180 浏览

ios - 参数类型不符合 Encodable

我正在尝试为 POST 请求创建一个结构。据我所知,该结构符合Codable类型别名,但我不断收到错误消息

将参数类型“RegisterUserRequest.Type”作为参数传递给 my JSONEncoder.

我试图只遵循Encodable, 来编写建议的必需 init() 但似乎没有任何效果。

这就是我的结构的样子

这是我得到的错误

在此处输入图像描述

0 投票
1 回答
630 浏览

ios - 使结构可编码/可解码而不仅仅是可编码,是否有任何性能优势?

对于要序列化的示例结构 Person

我们可以使它符合Encodable,DecodableCodable协议。我知道我们在Encodable和之间的选择Decodable取决于用例(例如,如果我们正在访问 API 并且不需要解码包含相同类型的响应),但我们也可以使其符合Codable如果结构是都用于编码和解码。

如果我们需要将结构严格用于编码解码,但不是两者兼而有之,那么从性能角度来看,仅使用 catch-allCodable而不是指定Encodable/Decodable一致性是一个坏主意吗?

使用Codable而不是指定Encodable/的一个明显缺点Decodable是另一个程序员可能会将结构误解为用于编码和解码,而实际上两者中只有一个发生。但是,如果我对性能非常感兴趣怎么办?

0 投票
3 回答
1331 浏览

ios - 如何手动解码选定的键并使用 swift Decodable 进行自动解码?

这是我正在使用的代码,

在这里,transcodeId_transcode或决定_transcoder。但我希望id和其余的键(不包括在这里)被自动解码。我该怎么做 ?