问题标签 [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 投票
1 回答
483 浏览

swift - Swift Encodable 参数和 Decodable 响应

我正在迁移一种使用 Alamofire 的旧方法,其中具有如下功能:

然后我会将响应或错误委托给调用它的控制器。

现在我想使用 Alamofire 5,并利用可解码和可编码功能,我在定义参数时遇到了问题。

在我看来,它应该是这样的:

但我收到一个错误:

协议类型“Encodable”的值不能符合“Encodable”;只有结构/枚举/类类型可以符合协议

谢谢。

0 投票
1 回答
3132 浏览

json - 类型“”不符合协议“可编码”

有人可以告诉这里有什么问题吗?

它向我发送此错误:类型“CityWeatherInfo”不符合协议“Encodable”

json是这样的:

{"coord":{"lon":-0.13,"lat":51.51},"weather":[{"id":804,"main":"Clouds","description":"阴云"," icon":"04n"}],"base":"stations","main":{"temp":287.45,"feels_like":286.61,"temp_min":284.82,"temp_max":289.15,"pressure": 1012,"湿度":72},"能见度":10000,"风":{"速度":1,"度":0},"云":{"全部":100},"dt":1592362322 ,"sys":{"type":1,"id":1414,"country":"GB","sunrise":1592365362,"sunset":1592425222},"timezone":3600,"id":2643743 ,"名称":"伦敦","鳕鱼":200}

0 投票
2 回答
782 浏览

ios - 保存结构的最快方法 iOS / Swift

我有像这样的结构

我想保存大量这种结构(> 1_000_000)

解码

编码

如何提高编码/解码时间和 RAM 内存量?

0 投票
1 回答
69 浏览

json - Swift:在结构中具有 Encodable 一致性的自定义键值编码

鉴于此结构和Encodable提供的默认一致性,JSON 编码产生

而相反,我想将其编码为

我如何使这个结构符合Encodable这个结果?

0 投票
1 回答
191 浏览

json - 将嵌套的可编码对象快速转换为字典

我目前正在使用这个扩展,它适用于基本对象。我很难弄清楚如何通过这个调用将嵌套的 Codable 对象转换为字典......在此先感谢!

0 投票
1 回答
107 浏览

swift - Swift Decodable - 如何避免泛型类型?

我正在从我的 JSON REST API 中检索一个复杂的嵌套对象。

我想解决这个问题的正确方法是引入一个泛型类型。

...但即便如此,values也可能是一个混合数组,所以我看不出声明什么V是有帮助的。

但是,当然,泛型类型会一直向上传播到层次结构、DocumentDraft对象、发布者、我的 API 调用等,从而污染了整个链,否则非常干净和可读的调用和对象。我只想在 的级别上处理这个问题Value,并让 JSONDecoder 以某种方式简单地返回两者之一。

有没有另一种方法来处理可选的两种可能性,val或者String[String]改变整个父对象?

0 投票
1 回答
103 浏览

json - 解码为超类的子类数组

当我解码一个子类(RegularCard)的数组时,我得到一个超类(Card)的数组。编码很好,我测试了它并且编码工作正常。但是,当我解码时,不会调用解码子类(RegularCard)的函数。我的代码如下。我在另一篇文章中发现了以下错误:

2017 年 6 月 25 日更新:我最终向 Apple 提交了一个关于此的错误。rdar://32911973 - 不幸的是,包含子类的超类数组的编码/解码循环:超类元素将导致数组中的所有元素都被解码为超类(永远不会调用子类的 init(from:),从而导致数据丢失或更糟)。

这是在这篇文章中。

'''

0 投票
1 回答
589 浏览

json - 如何在 Swift 中解码继承的类数组

问题:解码属于父类和子类的对象数组。

我读了很多关于这个主题的东西,但我还没有找到一个简单的解决方案。

我编码了一个类型属性,它提供了原始类的信息,但我还没有找到一种方法来使用它来解码对象。

这是测试代码。

原始数组的输出为:

解码数组的输出是:

如何更改 Parent 和/或 Child init 函数以正确解码对象?

显然,我的实际情况要复杂得多。我必须编码/解码一个包含具有继承的类数组的类。我试过用这个:

https://github.com/IgorMuzyka/Type-Preserving-Coding-Adapter

显然,它在 Parent, Child 的数组上工作正常,但如果数组在另一个类中,它就不行。

此外,我想学习一种在其他情况下重用的解决方案,并避免包含不是严格需要的外部库。

0 投票
1 回答
395 浏览

json - JSONencoder 不保存新的编码 json 数组(iOS)

我有一个看起来像这样的 json 文件(在一个名为 list.json 的文件中)

这是我的应用程序附带的默认文件(这些是可以删除的示例)。我的内容视图有一个成员变量,它使用我编写的解码函数来获取 json 数组并将其显示在列表中。我希望将另一本书添加到 json 文件中。视图将另一个结构附加到数组,然后使用此函数将新附加的数组编码到 list.json

当按下按钮时,在 NewBook 视图中调用此函数。bookData 是我的内容视图中的解码数组,我在我的 NewBook 视图中使用了绑定。

如果您添加这本书并返回到 contentview(列表现在包含附加的结构),则该代码有效,但如果您关闭应用程序并再次打开它,该列表将使用默认的 json 文件。我认为我的 writeJSON 函数有错误。

另请注意,我尝试在 URL 中将 create 参数更改为 false,但这没有帮助。

编辑:我正在按要求添加 Book 结构

编辑 2:这是一个 iOS 应用程序

编辑 3:我的加载数据功能

0 投票
1 回答
125 浏览

json - 如何制作一个结构来解码 Swift 中的 JSON 结构?

如何制作一个结构或类来快速解码以下类型的 json 结构?我想主要提取报告节点数据!