[英]Swift 2, how to get values from multistage JSON response
我需要從多階段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 = ...;
...
};
}
)
為了獲得名字,我現在應該遍歷任何對象。 不幸的是,這不起作用:
if let user = (payload["user"] as? [AnyObject]){
NSLog("user: %@", user);
}
有人知道如何通過anyobject取走名字,還是有人通過不使用anyobject從頭開始有其他解決方案?
非常感謝!
您的有效負載是AnyObject對象的數組。 因此,您必須按索引訪問其對象。 試試這個變體:
for payloadItem in payload {
if let user = payloadItem["user"] {
print("user: %@", user);
}
}
用戶不是數組而是字典。 嘗試以下方法,它應該可以工作:
if let user = (payload["user"] as? [String:AnyObject]) {
print("\(user)")
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.