Syahmi Shafawi
Syahmi Shafawi

Reputation: 5

How to GET volley JSONArray in Android

I'm new in Volley JSONArray. I unable to setText in txtResponse because I always getting this error at onErrorResponse.

This is my Logcat

......com.example.simplevolley.simplevolley W/System.err: org.json.JSONException: Value [{"com_branch_id":7,"com_branch_comId":1,"com_branch_name":"JT Temerloh","com_branch_manager":"Tn Hj Ahmad Bin Hj Mohd Sidin","com_branch_addr":"No.58, Jalan Ibrahim (Jln Masjid Abu Bakar)","com_branch_region":"Temerloh","com_branch_state":"PAHANG","com_branch_country":"MALAYSIA","com_branch_poscode":"28000","com_branch_email":"[email protected]","com_branch_licence":null,"com_branch_phoneNum":"09-2965625","com_branch_fax":null,"com_branch_fb":null,"com_branch_ig":null},{"com_branch_id":9,"com_branch_comId":1,"com_branch_name":"JT Nibong Tebal","com_branch_manager":"Pejabat Penang","com_branch_addr":"No. 10, Tingkat Atas, Jln Pekaka 1, Tmn Pekaka,","com_branch_region":"Nibong Tebal","com_branch_state":"PULAU PINANG","com_branch_country":"MALAYSIA","com_branch_poscode":"14300","com_branch_email":"[email protected]","com_branch_licence":null,"com_branch_phoneNum":"05-7171877","com_branch_fax":"057161877","com_branch_fb":null,"com_branch_ig":null}......

I want to read this JSON lines but because it start with JSONArray I'm so confused.

{
"res": true,
"datas": [
    {
        "com_branch_id": 7,
        "com_branch_comId": 1,
        "com_branch_name": "JT Temerloh",
        "com_branch_manager": "Tn Hj Ahmad Bin Hj Mohd Sidin",
        "com_branch_addr": "No.58, Jalan Ibrahim (Jln Masjid Abu Bakar)",
        "com_branch_region": "Temerloh",
        "com_branch_state": "PAHANG",
        "com_branch_country": "MALAYSIA",
        "com_branch_poscode": "28000",
        "com_branch_email": "[email protected]",
        "com_branch_licence": null,
        "com_branch_phoneNum": "09-2965625",
        "com_branch_fax": null,
        "com_branch_fb": null,
        "com_branch_ig": null
    },
    {
        "com_branch_id": 9,
        "com_branch_comId": 1,
        "com_branch_name": "JT Nibong Tebal",
        "com_branch_manager": "Pejabat Penang",
        "com_branch_addr": "No. 10, Tingkat Atas, Jln Pekaka 1, Tmn Pekaka,",
        "com_branch_region": "Nibong Tebal",
        "com_branch_state": "PULAU PINANG",
        "com_branch_country": "MALAYSIA",
        "com_branch_poscode": "14300",
        "com_branch_email": "[email protected]",
        "com_branch_licence": null,
        "com_branch_phoneNum": "05-7171877",
        "com_branch_fax": "057161877",
        "com_branch_fb": null,
        "com_branch_ig": null
    },]}

I need to get all datas value. This is my code

 private void makeJsonArrayRequest() {
    showpDialog();

    JsonArrayRequest req = new JsonArrayRequest(urlJsonArry,
            new Response.Listener<JSONArray>() {
                @Override
                public void onResponse(JSONArray response) {
                    Log.d("res", response.toString());

                    try {


                        jsonResponse = "";
                        for (int i = 0; i < response.length(); i++) {


                            JSONObject branchi = (JSONObject) response.get(i);
                            JSONObject branch = branchi.getJSONObject("datas");


                            Integer com_branch_id = Integer.valueOf(branch.getString("com_branch_id"));
                            Integer com_branch_comId = Integer.valueOf(branch.getString("com_branch_comId"));
                            String com_branch_name = branch.getString("com_branch_name");
                            String com_branch_manager = branch.getString("com_branch_manager");
                            String com_branch_addr = branch.getString("com_branch_addr");
                            String com_branch_region = branch.getString("com_branch_region");
                            String com_branch_state = branch.getString("com_branch_state");
                            String com_branch_country = branch.getString("com_branch_country");
                            String com_branch_poscode = branch.getString("com_branch_poscode");
                            String com_branch_email = branch.getString("com_branch_email");
                            String com_branch_licence = branch.getString("com_branch_licence");
                            String com_branch_phoneNum = branch.getString("com_branch_phoneNum");
                            String com_branch_fax = branch.getString("datas.com_branch_fax");
                            String com_branch_fb = branch.getString("datas.com_branch_fb");
                            String com_branch_ig = branch.getString("datas.com_branch_ig");


                            jsonResponse = "";
                            jsonResponse += "Branch name: " + com_branch_id + "\n\n";
                            jsonResponse += "Branch manager: " + com_branch_comId + "\n\n";
                            jsonResponse += "Branch state: " + com_branch_name + "\n\n";
                            jsonResponse += "Branch state: " + com_branch_manager + "\n\n";
                            jsonResponse += "Branch state: " + com_branch_addr + "\n\n";
                            jsonResponse += "Branch state: " + com_branch_region + "\n\n";
                            jsonResponse += "Branch state: " + com_branch_state + "\n\n";
                            jsonResponse += "Branch state: " + com_branch_country + "\n\n";
                            jsonResponse += "Branch state: " + com_branch_poscode + "\n\n";
                            jsonResponse += "Branch state: " + com_branch_email + "\n\n";
                            jsonResponse += "Branch state: " + com_branch_licence + "\n\n";
                            jsonResponse += "Branch state: " + com_branch_phoneNum + "\n\n";
                            jsonResponse += "Branch state: " + com_branch_fax + "\n\n";
                            jsonResponse += "Branch state: " + com_branch_fb + "\n\n";
                            jsonResponse += "Branch state: " + com_branch_ig + "\n\n";

                        }

                        txtResponse.setText(jsonResponse);

                    } catch (JSONException e) {
                        e.printStackTrace();
                        Toast.makeText(getApplicationContext(),
                                "res" + e.getMessage(),
                                Toast.LENGTH_LONG).show();

                        txtResponse.setText(e.getMessage());
                    }

                    hidepDialog();
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            VolleyLog.d(TAG, "res" + error.getMessage());
            Toast.makeText(getApplicationContext(),
                    error.getMessage(), Toast.LENGTH_LONG).show();
            Log.d("onErrorResponse", error.getMessage());
            hidepDialog();

        }
    });

    // Adding request to request queue
    AppController.getInstance().addToRequestQueue(req);
}

I try to follow other solution but unfortunately I fail and stuck.

Upvotes: 0

Views: 89

Answers (3)

Rajasimman R
Rajasimman R

Reputation: 495

try this..

 JSONObject json = new JSONObject(response);

    JSONArray jsonarray = json.getJSONArray("datas");

    for (int i = 0; i < jsonarray.length(); i++) {
         JSONObject c = jsonarray.getJSONObject(i);

         //here you get by json key
         String id = c.getString("com_branch_id");

    }

Upvotes: 2

Abu Yousuf
Abu Yousuf

Reputation: 6107

JsonArrayRequest will give you response as JSONArray. But your response is not JSONArray. Its JSONObject and that JSONObject contains JSONArray.

Use JsonObjectRequest for your case.

You can use Gson to convert you response to Java object.

Make a Java Pojo class that match with your response format. Than convert your response into java object.

        public void onResponse(JSONObject response) {

            String message = "";
            if (response != null) {
                message = response.toString();
                Post post = null;
                Gson gson = new Gson();
                post = gson.fromJson(response.toString(), Post.class);

            } else {
                message = "Response is null";

            }
        }

Upvotes: 0

HaroldSer
HaroldSer

Reputation: 2065

1) Your Json is not an array(it starts with { implying an object json). Use JsonObjectRequest.
2) Rather than grabbing the elements, in your response, by iterating you can use a jackson2 to map the response to your POJO.
3) You can use jsonschema2pojo to create a POJO class

Upvotes: 0

Related Questions