簡體   English   中英

Swift 2,如何從多階段JSON響應中獲取值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM