Разбор Json-объекта, полученного из остальных API - PullRequest
1 голос
/ 22 сентября 2019

Я использую библиотеку Volley для выполнения моих остальных API.

Используя это, я отправил электронную почту, ввод паролей на URL и получил ответ в JSON как:

{
    "success": true,
    "data": {
        "message": false,
        "token": "some token value"
    }
}

СейчасЯ хочу проанализировать поле «токен», полученное из ответа, и выполнить дальнейшие действия.Как это можно проанализировать?

Это функция, в которой я хочу проанализировать ответ.

public void parseData(String response) {

try {
     JSONObject jsonObject = new JSONObject(response);
     if (jsonObject.getString("success").equals("true")) {

    Toast.makeText(MainActivity.this,"UserExists",Toast.LENGTH_LONG).show();

           ////RETRIEVE "token" HERE

        else {

         Toast.makeText(MainActivity.this,"User not registered",Toast.LENGTH_LONG).show();

        }

Я видел эту ссылку Как проанализировать JSON Object Android Studio но мое поле "токен" находится внутри другого объекта, поэтому не знаю, как это сделать.

Ответы [ 4 ]

2 голосов
/ 22 сентября 2019

если вы хотите анализировать JSON таким же образом, как вы, вы должны сделать это, чтобы получить токен.

try {
        JSONObject jsonObject = new JSONObject(response);
        if (jsonObject.getBoolean("success")== true) {
            Toast.makeText(MainActivity.this, "UserExists", Toast.LENGTH_LONG).show();

            JSONObject dataObj= jsonObject.getJSONObject("data");
            String token= dataObj.getString("token");

            ////RETRIEVE "token" HERE
        } else {

            Toast.makeText(MainActivity.this, "User not registered", Toast.LENGTH_LONG).show();
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }
0 голосов
/ 22 сентября 2019

Вы можете попробовать, как показано ниже.

public void parseData(String response) {
     try {
         JSONObject jsonObject = new JSONObject(response);
         if (jsonObject.getString("success").equals("true")){
              Toast.makeText(MainActivity.this,"UserExists",Toast.LENGTH_LONG).show();

               ////RETRIEVE "token" HERE
               JSONObject dataObject = jsonObject.getObject("data");
               String token = dataObject.getString("token");
          }
          else {
              Toast.makeText(MainActivity.this,"User not registered",Toast.LENGTH_LONG).show();
          }
      }catch(JSONException e) {
         Log.e("YourTAG","exceptions "+e.toString());
    }

Надеюсь, это поможет вам.

0 голосов
/ 22 сентября 2019

Вот решение

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(
    Request.Method.GET, url, null, 
    new Response.Listener<JSONObject>() {

        @Override
        public void onResponse(JSONObject response) { 
            JSONObject dataObj = response.getObject("data");
             String token = dataObj.getString("token");
        }
    }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            // TODO: Handle error
        }
    }
);

Пожалуйста, используйте POJO для анализа.В противном случае вам потребуется больше времени для выполнения этой работы.

0 голосов
/ 22 сентября 2019

Если вы используете Volley, почему бы просто не использовать JsonObjectRequest:

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(
    Request.Method.GET, 
    url, 
    null, 
    new Response.Listener<JSONObject>() {

        @Override
        public void onResponse(JSONObject response) {
            // parse the response   
            JSONObject data= response.getObject("data");
            String token = data.getString("token");
        }
    }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            // TODO: Handle error
        }
    }
);

MySingleton.getInstance(this).addToRequestQueue(jsonObjectRequest);
...