我有一个 JSON
,其中包含 dictionaries
的 array
,我使用 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/