否JsonResponse即使单个数据为空也获得

时间:2015-09-15 03:45:47

标签: php android mysql

  {"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}

这是来自PHP的My JsonResponse。 由于这些响应中存在空数据,我无法在android studio中获得这些响应中的任何响应。 如果不存在空数据,则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;
    }
}

1 个答案:

答案 0 :(得分:0)

替换您的代码

tblcolumnpath = C:\Users\image-path\myimage.jpg;

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,在顶部使用Newtonsoft.Json.Linq

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