SwiftyJson 从字典中的数组中获取值

Posted

技术标签:

【中文标题】SwiftyJson 从字典中的数组中获取值【英文标题】:SwiftyJson get value from array in dictionary 【发布时间】:2020-07-24 11:32:10 【问题描述】:

一段时间以来,我一直在尝试检索 code 的值。这是我从服务器返回的 json:


    "message": "The given data was invalid.",
    "errors": 
        "code": [
            "The code has already been taken."
        ]
    

如何使用 swiftyJson 获取“代码”的值?

我已经尝试过了,但我认为它不正确。

let list: Dictionary<String, JSON> = json["errors"].dictionaryValue
                    
                    
var retunValue = list.values.first 

【问题讨论】:

为什么不把你已经做过的事情再做一次呢? list["code"].dictionaryValue @JoakimDanielson 如果我像print(list["code"]?.dictionaryValue) 一样打印它,我会得到:Optional([:])。但是当我使用print(list["code"]?.arrayValue) 时,我得到:Optional([The code has already been taken.]) 。如何删除 []? 你得到 [] 因为它是一个数组,所以把它当作一个数组来对待。 【参考方案1】:

您可以像这样访问"code" 数组的第一个元素:

json["errors"]["code"].array?.first?.string

如果 code 是一个空数组,或者 JSON 不是预期的结构,这将为您提供 nil

由于"code" 是一个数组,它可能包含多个字符串,因此您可能需要[String]

json["errors"]["code"].array?.compactMap  $0.string  ?? []

如果 JSON 不是预期的结构,这将为您提供一个空数组。

【讨论】:

以上是关于SwiftyJson 从字典中的数组中获取值的主要内容,如果未能解决你的问题,请参考以下文章

删除 SwiftyJSON 数组中的字典记录

SwiftyJSON 打印字典数组中的所有值

从数组值中过滤字典

如何比较字典值中的多个数组,并将每个数组元素的字典键映射到新数组/列表中

使用 SwiftyJSON 遍历数组字典字典

如何使用 SwiftyJSON 从深度嵌套的 JSON 字典中获取字符串 [重复]