Android排球:如何在解析之前检查json类型

Kal*_*ney 0 android json types android-volley

是否有可能事先检查json的类型?我是somteimes得到一个数组,有时一个对象,我不知道如何处理这2个案例,而不做2个不同的功能...

public void RequestApi( String url, final ApiResponse<ApiResult> completion  )
    {
        Log.v("Performing request: ", url);
        JsonObjectRequest jsonRequest = new JsonObjectRequest(Request.Method.GET, hostname+url, (JSONObject) null,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response)
                {
                    Log.v("RequestApi Response", response.toString());
                    //Log.v("Data: ", response.toString());
                    try {
                        ApiResult res = new ApiResult();
                        Boolean success = response.getBoolean("success");

                        //here need to check type, sometimes array, sometimes object
                        JSONArray data = response.getJSONArray("data"); 

                        res.success = success;
                        res.data = data;
                        completion.onCompletion(res);

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }

                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    ApiResult res = new ApiResult();
                    res.success = false;
                    completion.onCompletion(res);
                }
            }
        );

        AppController.getInstance().addToRequestQueue(jsonRequest);
    }
Run Code Online (Sandbox Code Playgroud)

Mal*_*der 5

使用StringRequest

  // Request a string response from the provided URL.
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
            new Response.Listener<String>() {
    @Override
    public void onResponse(String response) {
       Object json = new JSONTokener(response).nextValue();
       if (json instanceof JSONObject)
         //you have an object
       else if (json instanceof JSONArray)
       //you have an array
    }
}, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        // TODO something
    }
});
Run Code Online (Sandbox Code Playgroud)