我需要从多级JSON响应中获取值 对于我的登录,我从服务器获取以下JSON数据:
{
"status": "...",
"payloadList": [
{
"type": "...",
"authToken": "...",
"user": {
"id": ...,
"firstName": "...",
...
}
}
]
}
获取值firstName我尝试了以下内容:
do {
let json = try NSJSONSerialization.JSONObjectWithData(data, options: []) as! [String: AnyObject]
if let payload = (json["payloadList"] as? [AnyObject]){
NSLog("Payload: %@", payload);
}
} catch let error as NSError {
print("Failed to load: \(error.localizedDescription)")
}
由于它是多级的,我把它转换成字符串:anyobject而不是字典 有效载荷现在看起来像这样:
payload: (
{
authToken = ...;
type = ...;
user = {
id = ...;
firstName = ...;
...
};
}
)
要获得名字,我现在应该通过anyobject。 不幸的是,这不起作用:
if let user = (payload["user"] as? [AnyObject]){
NSLog("user: %@", user);
}
是否有人知道如何通过任何对象获取名字,或者是否有人通过不使用任何对象从头开始有其他解决方案?
非常感谢!
答案 0 :(得分:0)
您的有效负载是AnyObject对象的数组。所以你必须通过索引访问它的对象。试试这个变种:
for payloadItem in payload {
if let user = payloadItem["user"] {
print("user: %@", user);
}
}
答案 1 :(得分:-1)
用户不是数组而是字典。尝试以下,它应该工作:
Fragment