Обработка ответа Json с помощью alamofire - PullRequest
0 голосов
/ 24 декабря 2018

Я работаю над приложением для входа в IOS, но я не знаю, как обрабатывать ответ Json от сервера, я хочу написать булеву функцию, которая зависит от ответа сервера: это ответ сервера, еслиимя пользователя и пароль верны:

SUCCESS: {
    users =     (
                {
            email = test;
            id = 1;
            money = 200;
            password = test;
            username = test;
        }
    );
}

А если имя пользователя и пароль неверны:

SUCCESS: {
    users =     (
    );
}

, это мой бэкэнд-код, написанный на NodeJs:

app.get('/login/:username/:password',(req,res)=>{
    let user = req.params;
    var sql = "SELECT * FROM  users WHERE username = ? And password = ? ";
    mysqlConnection.query(sql,[user.username,user.password],
    function(err, rows){
        if(!err){    

       res.send(JSON.stringify({"users" : rows}));
}
 else {
console.log(err)
         }
    }

Это моя быстрая функция:

   class func login(username : String , password : String, _ completion: @escaping (Bool) -> ()) {
        let url = "http://127.0.0.1:3000/login/"+username+"/"+password
        Alamofire.request(url).responseJSON{response in
            switch response.result
            {
            case .failure:
    print(response)
    completion(false)
            case .success:
                //I want to handle the response here
                //return true if the username and password are right
                //return wrong if not
    print(response)
    completion(true)

            }
        }
}

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

Используйте код выше: -

func CallAPI(){

    let parameters: [String: Any] = [
        "Username": "Admin",
        "Password": "123456",
        "Language_Code": "EN"]


    Alamofire.request("Your API Url", method: .post, parameters: parameters, encoding: JSONEncoding.default)
        .responseJSON { response in

            if((response.result.value) != nil) {

                let ResultJson = JSON(response.result.value!)

                print("ResultJson==",ResultJson)

                let UserCount = ResultJson["users"].count

                if UserCount > 0 {

                    // Do with your above code

                    let Email =  ResultJson["users"]["email"].stringValue
                    let id =  ResultJson["users"]["id"].intValue
                    let money =  ResultJson["users"]["money"].intValue
                    let password =  ResultJson["users"]["password"].stringValue
                    let username =  ResultJson["users"]["username"].stringValue
                }
            }
    }
}
0 голосов
/ 24 декабря 2018

В обоих случаях вы получаете SUCCESS, поэтому вы можете взять users в качестве ключа и проверить, содержит ли он какой-либо элемент или нет, например, если имя пользователя и пароль верны, вы получите

(
            {
        email = test;
        id = 1;
        money = 200;
        password = test;
        username = test;
    }
)

Но если имя пользователя и пароль неверны, вы получите пустое значение для ключа users, поэтому в этом случае вы можете использовать

if usersDict.count == 0 {

    //username and password are wrong 
} else {

    //username and the password are right
}
...