getInt() function returns wrong value in volley android

Viewed 47

The is a function that I want to get data from API. All values other values are correct but there is two attributes 1. already_enrolled and 2. liked which are integers and the API return integer values for these two attributes. but When I get their values in java code in android app getInt() return 0 for objects. Here is the response of API:

  {"subjects":[{"id":1,"name":"word","package_id":2,"created_at":"2021-06-21T00:00:00.000000Z","updated_at":"2021-11-06T06:06:02.000000Z","courses_count":1,"likes_count":0,"enrolled_count":0,"rates_count":0,"rate_sum":null,"liked":0,"already_enrolled":0,
        "level":{"id":1,"package_id":2,"subject_id":1,"sequence":0,"level":"Beginner","created_at":null,"updated_at":null}},
    {"id":4,"name":"PowerPoint\r\n","package_id":2,"created_at":"-000001-11-30T00:00:00.000000Z","updated_at":"2021-11-06T00:00:00.000000Z","courses_count":1,"likes_count":0,"enrolled_count":0,"rates_count":0,"rate_sum":null,"liked":0,"already_enrolled":0,
        "level":{"id":3,"package_id":2,"subject_id":4,"sequence":2,"level":"0 to 100","created_at":null,"updated_at":null}},
    {"id":5,"name":"Excel","package_id":2,"created_at":"-000001-11-30T00:00:00.000000Z","updated_at":"2021-11-06T00:00:00.000000Z","courses_count":1,"likes_count":0,"enrolled_count":0,"rates_count":0,"rate_sum":null,"liked":0,"already_enrolled":0,
        "level":{"id":2,"package_id":2,"subject_id":5,"sequence":1,"level":"Intermediate","created_at":null,"updated_at":null}},
    {"id":8,"name":"Outlook","package_id":2,"created_at":"-000001-11-30T00:00:00.000000Z","updated_at":"2021-11-06T00:00:00.000000Z","courses_count":9,"likes_count":1,"enrolled_count":1,"rates_count":1,"rate_sum":2.5,"liked":1,"already_enrolled":1,
            "level":{"id":6,"package_id":2,"subject_id":8,"sequence":3,"level":"zero to hero","created_at":null,"updated_at":null}}
]} ```

for the last object already_enrolled and liked values are 1 but when I get its value in android it returns 0.
Here is my Java Code:
``` public void getSubjects(JSONObject object, final onSubjectRecieved subjectRecieved)
    {
        final JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, URL.getRootUrl() + "subjects",object, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                List<Subject> subjects = new ArrayList<>();
                try
                {
                    JSONArray sbjs = response.getJSONArray("subjects");
                    for(int i = 0; i< sbjs.length();i++)
                    {
                        Subject sbj = new Subject();
                        JSONObject obj = sbjs.getJSONObject(i);
                        sbj.setId(obj.getInt("id"));
                        Log.i("testtttts",obj.get("already_enrolled")+""+obj.getInt("id"));
                        sbj.setTitle(obj.getString("name"));
                        sbj.setPackage_id(obj.getInt("package_id"));
                        JSONObject level = obj.getJSONObject("level");
                        if(level != null)
                        {
                            sbj.setLevel(level.getString("level"));
                            sbj.setLevel_id(level.getInt("sequence"));
                        }
                        sbj.setVideos(obj.getInt("courses_count"));
                        sbj.setLikes(obj.getInt("likes_count"));
                        sbj.setEnrolleds(obj.getInt("enrolled_count"));
                        sbj.setRates(obj.getInt("rates_count"));
                        if(obj.getInt("rates_count") > 0)
                        {
                            sbj.setRate_sum(obj.getDouble("rate_sum"));
                        }else
                        {
                            sbj.setRate_sum(0);
                        }
                        subjects.add(sbj);
                    }
                    subjectRecieved.onRecieved(subjects);
                }catch(Exception e)
                {
                    subjectRecieved.onError(e.toString());
                }
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                subjectRecieved.onError(error.toString());
            }
        }){
            public Map<String, String> getHeaders() {
                Map<String, String> params = new HashMap<String, String>();
                SessionSharedPrefrence ssp = new SessionSharedPrefrence(context);
                params.put("Authorization", "Bearer " + ssp.getToken());
                return params;
            }
        };
        request.setRetryPolicy(new DefaultRetryPolicy(15000,DefaultRetryPolicy.DEFAULT_MAX_RETRIES,DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
        Volley.newRequestQueue(context).add(request);
    }

this is the log result

I/testtttts: 01
    04
I/testtttts: 05
    08 ```
1 Answers

Instead of obj.get("already_enrolled") use obj.getInt("already_enrolled") since it is an Integer.

In this line

Log.i("testtttts",obj.get("already_enrolled")+""+obj.getInt("id"));

Related