簡體   English   中英

獲取json響應swift的值

[英]Get value of json response swift

這是我的代碼:

do {
   if let json = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? NSDictionary {
   print(json)
   let success = json ["success"] as? Int
   print("Success: \(success)")

這是我的輸出:

{
    error = "Account does not exist, please create it!";
}
Success: nil

`

那么,在let success = json ["success"] as? Int let success = json ["success"] as? Int ,一切正常,但是為什么我在此行之后的輸出為nil

這是我的PHP:

public function login($username,$password) {
        $query = "Select * from users where username = '$username' and password = '$password'";
        $result = mysqli_query($this->connection, $query);
        if (mysqli_num_rows($result) > 0) {
            $json['success'] = 'Welcome '. $username . '!';
            echo json_encode($json);
            mysqli_close($this->connection);
        } else {
            $json['error'] = 'Account does not exist, please create it!';
            echo json_encode($json);
            mysqli_close($this->connection);
        }

let success = json ["success"] as? Int

當您使用此行時,它將提取鍵“成功”的值。 由於您的json響應不包含該字段,因此它將成功變量設置為nil。

除錯誤鍵外,您還需要返回成功鍵。

成功nil因為JSON中不存在鍵“成功”。

X as? Int X as? Int =盡可能使x由X轉換為Int 如果不可能(因為該值為nil或該值不能轉換為Int ),則將其設置為Nil 那就是問號。

所以,我會這樣做:

if let success = json ["success"] as? Int {
    print("Success: \(success)")
} else {
    // Failed
}

您還可以更改PHP代碼,以確保它始終返回“成功”鍵。 但是,我建議您使用上面的Swift代碼,因為這樣一來,您就永遠安全了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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