从json array swift 2获取数据

时间:2015-10-06 19:32:13

标签: json swift2 xcode7

我正在尝试使用json数组获取数据,这是我正在尝试的代码,问题是我只想获得此json中的名称

    {
"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)")

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

3 个答案:

答案 0 :(得分:2)

你没有 使用库而你 没有使用键值编码。

就像你已经在使用下载词典一样:

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中,字典由{}定义,数组由[]定义。你在这里有一个字典,包含一个字典,而不是一个数组(参见你的问题标题)。

答案 1 :(得分:0)

解码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)
}

答案 2 :(得分:0)

使用您的代码,然后从jsonData获取字段:

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