获得json响应迅速的价值

时间:2016-02-11 10:05:59

标签: ios json 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之前,一切都运作良好,但为什么我的输出在这一行之后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);
        }

2 个答案:

答案 0 :(得分:2)

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

当您使用此行时,它将提取键的值" success"。由于您的json响应不包含该字段,因此它在success变量中设置为nil。

除错误键外,您还需要返回成功键。

答案 1 :(得分:2)

成功是nil因为关键的成功'在JSON中不存在。

X as? Int =尝试在可能的情况下使x成为Int。如果不可能(因为值为nil或值无法转换为Int),请将其设为Nil。这就是问号的作用。

所以,我会这样做:

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

您还可以更改您的PHP代码,以确保它始终返回成功'键。但是,我建议使用上面的Swift代码,因为你总是安全的。