没有JsonResponse,即使单个数据为空


No JsonResponse Obtained even when single data is null

  {"futsal_id":"59",
    "description":[{
    "futsal_id":"59",
    "futsal_desc":"This is great futsal"}],
    "features":[{"futsal_id":"59","futsal_feat":"free 4 bottles of water"}],
    "dimension":null,
    "no_of_futsal":null,
    "opening_hrs":null,
    "price_weekdays_price1":[{
            "futsal_id":"59",
            "price_id":"1",
            "start_time":"6am",
            "end_time":"10am",
            "price":"1000"}],
    "price_weekdays_price2":[{
            "futsal_id":"59",
            "price_id":"2",
            "start_time":"10am",
            "end_time":"3pm",
            "price":"1200"}],
    "price_weekdays_price3":[{
            "futsal_id":"59",
            "price_id":"3",
            "start_time":"3pm",
            "end_time":"9pm",
            "price":"1300"}],
    "price_weekend_price1":null,
            "price_weekend_price2":null,
            "price_weekend_price3":null,
    "images":[],
    "image_count":0,
    "news":null}

这是我的json响应从PHP。我不能得到任何这个响应在android工作室与这些响应,因为目前的null数据在这些响应。如果没有null数据存在,response. getstring()将拥有除response之外的所有这些数据。由于数据为空,getString没有响应。有什么问题吗?

    class ShowResult extends AsyncTask<Void, Void, String[]> {
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pd.show();
    }
    @Override
    protected void onPostExecute(String[] aVoid) {
        super.onPostExecute(aVoid);
        pd.cancel();
        txt.setText(result[0]);
      }
    @Override
    protected String[] doInBackground(Void... params) {
        try {
            Log.d("sssssssssssssss", "sadf");
            URL url = new URL("http://futsalgroove.s4generation.com/app/android_c/show_details/");
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.setDoOutput(true);
            urlConnection.setRequestMethod("POST");
            String urlParameters = "id=" + bundle.getString("id");
            //sending the parameter using DataOutputStream
            DataOutputStream wr = new DataOutputStream(urlConnection.getOutputStream());
            wr.writeBytes(urlParameters);
            wr.flush();
            wr.close();
            //Reading the data or response from the PHP file
            BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
            Log.d("sssssssssssssss", "iii" + in);
            String inputLine;
            StringBuffer response = new StringBuffer();
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
                Log.d("Detail Outputss", inputLine);
            }
            in.close();
            //Using the JasonObject from php
            Log.d("Detail Outputsss", "" + response.toString());
            JSONObject json = new JSONObject(response.toString());
            JSONArray description = json.getJSONArray("description");
            JSONObject descObj = description.getJSONObject(0);
            result[0] =  descObj.getString("futsal_desc");
            Log.d("DetailOut","" + result[0]);
     }
       } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (JSONException e) {
        }
        return result;
    }
}

替换你的代码

JSONObject json = new JSONObject(response.toString());
JSONArray description = json.getJSONArray("description");
JSONObject descObj = description.getJSONObject(0);
result[0] =  descObj.getString("futsal_desc");
Log.d("DetailOut","" + result[0]);

JObject json = JObject.Parse(response.toString());
JArray description = (JArray)json["description"];
JObject descObj = (JObject)description[0];
result[0] = descObj["futsal_desc"].ToString();
Log.d("DetailOut","" + result[0]);

可能会起作用。使用Newtonsoft.Json.Linq on top

using Newtonsoft.Json.Linq;