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