Swift 2,如何从多级JSON响应中获取值

时间:2016-04-26 08:54:11

标签: ios json swift

我需要从多级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);
}

是否有人知道如何通过任何对象获取名字,或者是否有人通过不使用任何对象从头开始有其他解决方案?
非常感谢!

2 个答案:

答案 0 :(得分:0)

您的有效负载是AnyObject对象的数组。所以你必须通过索引访问它的对象。试试这个变种:

for payloadItem in payload {
    if let user = payloadItem["user"] {              
        print("user: %@", user);
    }
}

答案 1 :(得分:-1)

用户不是数组而是字典。尝试以下,它应该工作:

Fragment