JSON数据解析错误来自服务器的响应变为空:Android

JSON数据解析错误来自服务器的响应变为空:Android,android,arrays,json,android-json,Android,Arrays,Json,Android Json,我正在尝试从服务器获取数据,然后将其显示到应用程序中 我有JSON数据 {"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:

我正在尝试从服务器获取数据,然后将其显示到应用程序中

我有JSON数据

{"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"]]}
我的JAVA类是

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);

}
为什么我从服务器获取的数据值为null?我应该如何修复错误? 我参考了以下链接:

解析数据org.json.JSONException时出错:Value我观察到您的json响应,我认为无论您在列json数组中有什么,都不会有您得到的字符串,这就是您得到错误的原因

在您的响应中没有键值对,所以很容易得到字符串

因此,您应该getString()而不是getJsonObject()

index基本上是json数组索引,你可以把它放在0或其他什么地方,如果你想的话,可以循环

我观察你的json响应,我认为无论你在json数组列中有什么,都没有字符串,这就是你出错的原因

在您的响应中没有键值对,所以很容易得到字符串

因此,您应该getString()而不是getJsonObject()

index基本上是json数组索引,你可以把它放在0或其他地方,如果你想的话,可以用进行循环。

试试这个。。。。。
JSONParser-JSONParser=new-JSONParser();
jsonObject=jsonParser.getJSONFromUrl(url);
试一试{
user1=jsonObject.getJSONArray(“列”);
对于(int i=0;i
试试这个。。。。。
JSONParser-JSONParser=new-JSONParser();
jsonObject=jsonParser.getJSONFromUrl(url);
试一试{
user1=jsonObject.getJSONArray(“列”);
对于(int i=0;i
是的,确实有效。谢谢。但我仍然从服务器响应中获取空数据。你能告诉我是什么导致了这个问题吗?确切的意思是什么问题?数据是否为空?服务器中的数据包含列和数据。但是,我从服务器得到的响应只有列的值,并且数据为空。是的,它确实起作用了。谢谢。但我仍然从服务器响应中获取空数据。你能告诉我是什么导致了这个问题吗?确切的意思是什么问题?数据是否为空?服务器中的数据包含列和数据。但是,我从服务器得到的响应只有列的值,并且数据为空。
System.err: org.json.JSONException: Value TIMEID at 0 of type java.lang.String cannot be converted to JSONObject
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();
    }
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();
            }