如何从具有多个值的 Codable 结构中获取一个值?

Posted

技术标签:

【中文标题】如何从具有多个值的 Codable 结构中获取一个值?【英文标题】:How to get one value from a Codable struct with multiple values? 【发布时间】:2019-05-07 04:56:18 【问题描述】:

我有一个很大的 JSON 响应和内部


    "availabilityResultList": [
        
            "availabilityRouteList": [
                
                    "availabilityByDateList": [
                        
                            "originDestinationOptionList": [

有3个独立的

 "originDestinationOptionList": [
    
    "fareComponentGroupList":[...]
    ,
    
    "fareComponentGroupList":[...]
    ,
    
    "fareComponentGroupList":[...]
    ,
],

我可以使用 Codables 访问第一个 'fareComponentGroupList' 中的值 作为

root.availabilityResultList.first?.availabilityRouteList.first?.availabilityByDateList.first?.originDestinationOptionList.first?.fareComponentGroupList.first?.xxx

如何访问第二个和第三个 fareComponentGroupList 的值?

(对于这些愚蠢的问题,我很抱歉,但我是 swift Codables 的新手)

【问题讨论】:

【参考方案1】:

由于originDestinationOptionList 返回一个字典数组,只需通过索引从那里获取它。

let originDestinationOptionList = root.availabilityResultList.first?.availabilityRouteList.first?.availabilityByDateList.first?.originDestinationOptionList

let firstobject = originDestinationOptionList[0]["fareComponentGroupList"]
let secondObject = originDestinationOptionList[1]["fareComponentGroupList"]

let firstObjectsFirstItem = firstObject[0]

如果上面给出错误,这可行(Swift 5)

let originDestinationOptionList = root.availabilityResultList.first?.availabilityRouteList.first?.availabilityByDateList.first?.originDestinationOptionList

let firstobject = originDestinationOptionList[0].fareComponentGroupList.first

let firstObjectsFirstItem = firstObject?. (add the remaining part)

【讨论】:

它给出错误“'OriginDestinationOptionList'类型的值没有下标”?关于 let firstobject = originDestinationOptionList[0]["fareComponentGroupList"] 我认为应该是 let firstobject = originDestinationOptionList[0].fareComponentGroupList 你能发布你的可编码结构类吗? @Pratap谢谢,我在上面的代码的帮助下弄明白了,我不知道它是否与swift 5有关,我不得不使用我之前评论中提到的另一种方式

以上是关于如何从具有多个值的 Codable 结构中获取一个值?的主要内容,如果未能解决你的问题,请参考以下文章

如何从具有多个页面的表中获取表记录?

使用 Codable 使用多个键解码 JSON

Python:从字典中获取具有最小值但有多个最小值的键

如何在 Asp.net MVC C# 中使用 Linq 从多个表中选择具有最大计数值的记录

如何从 Codable 结构中捕获 init(来自解码器:解码器)中的错误?

Spark 仅获取具有一个或多个空值的列