0

I am trying to fetch data from the server and then display it into the app.

I have JSON data as,

{"COLUMNS":["TIMEID","BRANCHID","COMPANYID","MON_O","TUE_O","WED_O","THU_O","FRI_O","SAT_O","SUN_O","MON_C","TUE_C","WED_C","THU_C","FRI_C","SAT_C","SUN_C","CREATDATE"],"DATA":[[195,4,4,"09:00","09:00","09:00","09:00","09:00","Closed","Closed","16:30","16:30","16:30","16:30","16:30","Closed","Closed","May, 16 2017 08:16:12"]]}

I have my JAVA class as,

public static final String MON_O  = "MON_O";
public static final String TUE_O = "TUE_O";
public static final String WED_O = "WED_O";
public static final String THU_O = "THU_O";
public static final String FRI_O = "FRI_O";
public static final String SAT_O = "SAT_O";
public static final String SUN_O = "SUN_O";

public static final String MON_C = "MON_C";
public static final String TUE_C = "TUE_C";
public static final String WED_C = "WED_C";
public static final String THU_C = "THU_C";
public static final String FRI_C = "FRI_C";
public static final String SAT_C = "SAT_C";
public static final String SUN_C = "SUN_C";

public static final String JSON_ARRAY = "COLUMNS";

private void getData() {
    String url = context.getString(site_url)+"branch_time.cfc?method=branchtime&branchid=" +dBranchID;

    StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() {

        @Override
        public void onResponse(String response) {
            showJSON(response);
        }
    },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Toast.makeText(context,error.getMessage().toString(),Toast.LENGTH_LONG).show();
                }
            });

    RequestQueue requestQueue = Volley.newRequestQueue(context);
    requestQueue.add(stringRequest);
}

    private void showJSON(String response) {

    String name = "";

    try {
        JSONObject jsonObject = new JSONObject(response);
        Log.d("TAG", jsonObject.toString());
        JSONArray result = jsonObject.getJSONArray(JSON_ARRAY);

            Log.d("TAG", result.toString());
            JSONObject companyData = result.getJSONObject(0);
            name = companyData.getString(MON_O);
            Log.e(name,"datadtadattadtatadtat");
    } catch (JSONException e) {
        e.printStackTrace();
    }

    timeStatus.setText(name);

}

When I am triying to log the response from the server, I could see that only the COLUMNS value is there where as the DATA is null. Also, I am getting an error as below,

System.err: org.json.JSONException: Value TIMEID at 0 of type java.lang.String cannot be converted to JSONObject

Why would I get the DATA values from the server as null and how am I suppose to fix the error? I have referred the links: org.json.JSONException: Value of type java.lang.String cannot be converted to JSONArray

Error parsing data org.json.JSONException: Value <br of type java.lang.String cannot be converted to JSONObject

However, these do not seem to help in my case. Please can anyone help?

0

2 Answers 2

3

Try this.....

JSONParser jsonParser = new JSONParser();
            jsonObject = jsonParser.getJSONFromUrl(url);
    
            try {
                user1 = jsonObject.getJSONArray("COLUMNS");
    
                for (int i = 0; i < user1.length(); i++) {
                    String value = (String) user1.get(i);
    
                    getList.add(value.toString());
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
Sign up to request clarification or add additional context in comments.

Comments

1

I observe your json response, i think whatever you are having in column json array there are nothing having string which you are getting thats why you are getting error,

In your response nothing having key value pair so its easy to get String.

so you should getString() instead of getJsonObject()

private void showJSON(String response) {
    String name = "";
    try {
        JSONObject jsonObject = new JSONObject(response);
        Log.d("TAG", jsonObject.toString());
        JSONArray result = jsonObject.getJSONArray(JSON_ARRAY);
        Log.d("TAG", result.toString());
        name = result.getString(index);
        Log.e(name,"datadtadattadtatadtat");
    } catch (JSONException e) {
        e.printStackTrace();
    }

index is basically json array index you can put it 0 or something and go for loop if you want.

3 Comments

Yes, it did work. Thanks a lot. But I am still getting the DATA from the server response as null. Can u suggest what can cause this issue?
means whats the exactly issue? Are you getting null in data ?
The data in the server is having COLUMNS and DATA. However, The response I am getting from the server is only having the values for the COLUMNS and the DATA is null.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.