我正在尝试使用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)")
但这会打印整个用户数据,姓名,电话和电子邮件,我怎样才能只打印姓名或只打印电子邮件?
答案 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