从 json 数组 swift 中获取数据 2

Get data from json array swift 2

我正在尝试从 json 数组中获取数据,这是我正在尝试的代码,问题是我只想获取此 [=20] 中的名称=]

    {
"tag": "getuser",
"success": 1,
"error": 0,
"uid": "56108b7e651ad2.95653404",
"user": {
    "name": "2",
    "phone": "2",
    "email": "2"
        }
   }

我试过了

                let jsonData:NSDictionary = try NSJSONSerialization.JSONObjectWithData(urlData!, options:NSJSONReadingOptions.MutableContainers ) as! NSDictionary

                let  name = jsonData["user"]
                print("Nombre del usuarioes: \(name)")

但这会打印整个用户数据、姓名、phone 和电子邮件,我怎样才能只打印姓名或电子邮件?

一个很好的解码库 json 是 SwiftyJSON

您可以像这样从 json 获取下标数据

import SwiftyJSON
if let dataFromString = jsonString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) {
    let json = JSON(data: dataFromString)
    let name = json["user"]["name"].string
    print(name)
}

使用您的代码,然后通过以下方式从 jsonData 获取字段:

let name = jsonData.valueForKeyPath("user.name") as! String
let email = jsonData.valueForKeyPath("user.email") as! String

没有使用库,您没有使用key-value编码。

与您已经在字典中使用下标的方式相同:

let name = jsonData["user"]

您只需继续订阅即可找到您的价值。

示例:

do {
    let jsonData = try NSJSONSerialization.JSONObjectWithData(urlData!, options: []) as! NSDictionary
    let user = jsonData["user"]!
    let name = user["name"]
    print(name)
} catch {
    print(error)
}

安全解包更好:

do {
    if let data = urlData, let jsonData = try NSJSONSerialization.JSONObjectWithData(data, options: []) as? NSDictionary {
        if let user = jsonData["user"] as? NSDictionary, let name = user["name"] as? String {
            print(name)
        }
    }
} catch {
    print(error)
}

注:在JSON中,字典由{}定义,数组由[]定义。你这里有一个包含字典的字典,而不是一个数组(参见你的问题标题)。