【问题标题】:SwiftyJson get value from array in dictionarySwiftyJson 从字典中的数组中获取值
【发布时间】: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.]) 。如何删除 []?
  • 你得到 [] 因为它是一个数组,所以把它当作一个数组来对待。

标签: ios swift swifty-json


【解决方案1】:

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多