我的JSON
包含array
dictionaries
并使用Swift
的{{1}}类对其进行解码。
我想知道,是否有可能让类只解码一些JSONDecoder
,而不是所有,例如(可能基于某些标准)?我想,如果dictionaries
包含许多array
,这可能会有用,但您不希望所有这些都只包含一个{。}}。
如果你知道如何做到这一点,我将非常感谢你的帮助。
答案 0 :(得分:1)
从技术上讲,人们可以编写一个init(from:)
方法,手动获取解码器的容器,然后获得"嵌套"容器(例如nestedUnkeyedContainer
),并手动解码该集合中的项目,只添加您想要的项目。有关编写IIF(
([Time].[year-month-date].CURRENTMEMBER
IS [Time].[year-month-date].&[jan])
OR
( [Measures].[Base Value]<>([TIME].[year-month-date].CURRENTMEMBER.prevmember,[Measures].[Base Value])
,NULL
,MAX(PERIODSTODATE([TIME].[year-month-date].[month],[TIME].[year-month- daenter image description herete].CURRENTMEMBER.PREVMEMBER),[Measures].[Sales])
)
方法的介绍,请参阅Encoding and Decoding Custom Types。
但我会劝阻你这样做。解析整个JSON然后init(from:)
生成的集合将其提炼为您想要的集合,这将变得更加简单和合理。
除非您有很多记录(例如数百万?),其中解析开销变得可观察,否则我建议您执行filter
整个JSON,然后decode
您的数组。这将需要更少的代码,并且是更合乎逻辑的方法。
如果你有很多记录,在我考虑filter
kludge之前,我会重新考虑使用JSON。我使用CoreData或SQLite或类似的东西,它更适合在提取数据时动态过滤数据。