检查JSON响应是否包含特定值

时间:2017-09-05 08:30:33

标签: java android json server response

因此,我正在Android Studio中构建一个Android应用程序,以获取具有登录功能的激动人心的网页。我已成功将应用程序连接到网站数据库,我可以登录并从服务器获得响应。应用程序在响应中查找错误值,但响应不包含错误值。

这是我的应用中的代码:

public void onResponse(String response) {
            Log.d(TAG, "Login Response: " + response.toString());
            hideDialog();

            try {
                JSONObject jObj = new JSONObject(response);
                boolean error = jObj.getBoolean("error");

                // Check for error node in json
                if (!error) {
                    // user successfully logged in
                    // Create login session
                    session.setLogin(true);


                    // Launch main activity
                    Intent intent = new Intent(LoginActivity.this,
                            MainActivity.class);
                    startActivity(intent);
                    finish();

这是登录成功时服务器提供的响应:

Login Response: {"howislife":1,"rekeningnummer":"212220","soortuser":"student","datum":"05 Sep 2017"}

因此,当登录成功时,它会显示“howislife:1”,当密码或用户名不正确时,它会显示“howislife:2”或“howislife:3”。因此,我的Android应用中的代码需要检查“howislife”的值是什么。我怎样才能做到这一点?提前谢谢!

4 个答案:

答案 0 :(得分:2)

试试这段代码,

int howislife = (!jsonObjects.isNull("howislife")) ?
                                        jsonObjects.optInt("howislife") : 0;
            if (howislife == 1) {
                //login sucess
            } else {
               //login failed
            }

答案 1 :(得分:1)

我假设你的api总是使用这些参数给出响应,如果响应是 null ,那么在转换为 JSONObject 之前检查它,那么你可以尝试下面的代码,它会工作。

JSONObject jObj = new JSONObject(response);
            if(jObj.getInt("howislife")==1){
                  System.out.println("Login success");
            }else{
                  System.out.println("Login fail");
            }

答案 2 :(得分:0)

有一个功能" has()"在Android中检查JSONObject的键。

  

boolean has(String name)   如果此对象具有name的映射,则返回true。映射可能为NULL。

更多详情:

https://developer.android.com/reference/org/json/JSONObject.html#has(java.lang.String)

答案 3 :(得分:0)

我已经使用此代码解决了它,谢谢!

public void onResponse(String response) {
            Log.d(TAG, "Login Response: " + response.toString());
            hideDialog();

            try {
                JSONObject jObj = new JSONObject(response);
                int login1 = jObj.getInt("howislife");
                System.out.println(login1);
                //Check for error node in json
                if (login1 == 1) {
                    // user successfully logged in
                    // Create login session
                    session.setLogin(true);


                    // Launch main activity
                    Intent intent = new Intent(LoginActivity.this,
                            MainActivity.class);
                    startActivity(intent);
                    finish();
                } else if(login1 == 2) {
                    Toast.makeText(getApplicationContext(), "Wachtwoord verkeerd", Toast.LENGTH_LONG).show();
                } else if(login1 == 3) {
                    Toast.makeText(getApplicationContext(), "Gebruikersnaam of/en wachtwoord verkeerd", Toast.LENGTH_LONG).show();
                } else {
                    Toast.makeText(getApplicationContext(), "Er is iets fout gegaan, probeer opnieuw.", Toast.LENGTH_LONG).show();
                }
            } catch (JSONException e) {
                // JSON error
                e.printStackTrace();

            }

        }