ios - 使用 Codable 协议(protocol)仅解码 JSON 的一部分

标签 ios json swift decode

我有一个 JSON,其中包含 dictionariesarray,我使用 Swift 对其进行解码JSONDecoder 类。

我想知道,是否可以让类只解码一些 dictionaries,而不是全部,例如(可能基于某些标准)?我想,如果 array 包含许多 dictionaries,这可能会有用,但您不需要所有的字典,而只需要一个字典。

如果您知道如何执行此操作,我将不胜感激。

最佳答案

技术上可以写一个init(from:)手动获取解码器容器的方法,然后获取“嵌套”容器(例如 nestedUnkeyedContainer ),然后手动解码该集合中的项目,仅添加您想要的项目。参见 Encoding and Decoding Custom Types有关编写 init(from:) 方法的介绍。

但我会劝阻你这样做。解析整个 JSON 然后过滤生成的集合以将其提炼成您想要的集合,这将变得更加简单和合乎逻辑。

除非您有大量记录(例如数百万?),在这些记录中解析开销变得可见,否则我建议对整个 JSON 执行解码,然后过滤您的数组.这将需要更少的代码,并且是更合乎逻辑的方法。

如果您有那么多记录,在我考虑使用 init(from:) 之前,我会重新考虑使用 JSON。我会使用 CoreData 或 SQLite 或类似的东西,它们更适合在提取数据时动态过滤数据。

关于ios - 使用 Codable 协议(protocol)仅解码 JSON 的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48478887/

相关文章:

c++ - 为 arm64 iPhone 编译 xcode 5 失败

objective-c - iOS编程: How to recognize if a user draws a circle or a cross?

ios - Notes 应用程序的详细信息屏幕是如何设计的

c# - 准时制。序列化为 json 的最佳方式

java - 如何在 Jersey-Test 中发布 JSON 请求

ios - Swift 字典包含值但未打印在调试器控制台上

ios - 为什么字典中的 "values"属性不是一个简单的数组,而是一些奇怪的东西?

swift - 错误处理中的错误 - swift

ios - 加载非 http ://url scheme 后的操作

c# - 将c#中的JSON数组反序列化为列表