如何从具有多个值的 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 结构中获取一个值?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Asp.net MVC C# 中使用 Linq 从多个表中选择具有最大计数值的记录