Android org.json.JSONException:所有的广告都没有值

Android org.json.JSONException:所有的广告都没有值,android,json,Android,Json,我已经创建了一个应用程序。在此应用程序中,有一个广告模块。本模块分为两部分: 制作广告 浏览广告 但是,当我点击VIE广告时,日志cat中出现以下错误。 下面的代码显示所有_播发都没有值。但我为参数输入的值已成功存储在数据库中 07-07 04:32:12.643: W/System.err(3306): org.json.JSONException: No value for all_advertisements 07-07 04:32:12.653: W/System.

我已经创建了一个应用程序。在此应用程序中,有一个广告模块。本模块分为两部分:

制作广告 浏览广告 但是,当我点击VIE广告时,日志cat中出现以下错误。 下面的代码显示所有_播发都没有值。但我为参数输入的值已成功存储在数据库中

    07-07 04:32:12.643: W/System.err(3306):    org.json.JSONException: No value for all_advertisements
    07-07 04:32:12.653: W/System.err(3306):     at org.json.JSONObject.get(JSONObject.java:355)
    07-07 04:32:12.653: W/System.err(3306):     at org.json.JSONObject.getJSONArray(JSONObject.java:549)
    07-07 04:32:12.653: W/System.err(3306):     at com.sunmobileappnow.mobileappnow.ViewAdvertise$ViewAdvertisement.doInBackground(ViewAdvertise.java:99)
    07-07 04:32:12.653: W/System.err(3306):     at com.sunmobileappnow.mobileappnow.ViewAdvertise$ViewAdvertisement.doInBackground(ViewAdvertise.java:1)
    07-07 04:32:12.653: W/System.err(3306):     at android.os.AsyncTask$2.call(AsyncTask.java:288)
    07-07 04:32:12.653: W/System.err(3306):     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
    07-07 04:32:12.653: W/System.err(3306):     at 
第一单元工作正常。创建广告并填写诸如姓名、手机、状态和添加描述等参数后,单击发送按钮创建广告并将值存储在数据库中。值以JSON格式存储

代码id

            JSONObject jo = new JSONObject(data1);

            Log.d("response", jo.toString(4));
            if(jo.getString("err-code").equals("0"))
            {


            JSONArray jArray = jo.getJSONArray("all_advertisement");  
            Log.d("Array", jArray.toString(4));




            for (int j=0; j < jArray.length(); j++)
            {
                try {
                    JSONObject jsob = jArray.getJSONObject(j);

                    mname = jsob.getString("name");   
                    mobile = jsob.getString("mbl_nmbr");   
                    state = jsob.getString("states");   
                    desc = jsob.getString("desc");   


                    nameArray.add(jsob.getString("name").toString());

                    mobileArray.add(jsob.getString("mbl_nmbr").toString());

                    stateArray.add(jsob.getString("states").toString());

                    descArray.add(jsob.getString("desc").toString());

                    HashMap<String, String> adHash = new HashMap<String, String>();

                    adHash.put("name", jsob.getString("name").toString());

                    adHash.put("mbl_nmbr", jsob.getString("mbl_nmbr").toString());

                    adHash.put("states", jsob.getString("states").toString());

                    adHash.put("desc", jsob.getString("desc").toString());

                    //adsArray.add(adHash);

                      // adapter = new ArrayAdapter<String>(ViewAdvertise.this, R.layout.listrow, stateArray);   
完整的JAVA代码

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.view_ads);
        pref=this.getSharedPreferences("Driver", MODE_WORLD_READABLE);
        login_token = pref.getString("login_token","login_token"); 
        list=(ListView) findViewById(R.id.list);   
        tv1=(TextView) findViewById(R.id.text2);
        tv2=(TextView) findViewById(R.id.text4);
        tv3=(TextView) findViewById(R.id.text5);
        tv4=(TextView) findViewById(R.id.text6);
        new ViewAdvertisement().execute();

    }
    private class ViewAdvertisement extends AsyncTask<String, String, String[]> {
        String mname,mobile,state,desc;

        @Override
        protected String[] doInBackground(final String... params) 
        {
            ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
            if (conMgr.getActiveNetworkInfo() != null
                    && conMgr.getActiveNetworkInfo().isAvailable()
                    && conMgr.getActiveNetworkInfo().isConnected()) 
            {
                HttpClient httpclient = new DefaultHttpClient();

                JSONObject job1= new JSONObject();
                try 
                {
                    job1.put("status_key","2");
                    job1.put("method", "view_add");
                    job1.put("state", state);
                    job1.put("login_token", login_token);

                    StringEntity se = new StringEntity(job1.toString());

                     HttpPost httppost = new HttpPost("http://suntechwebsolutions.com/clients/DGCapp/webservice.php");



                    httppost.setEntity(se);

                    HttpResponse response1 = httpclient.execute(httppost);
                    String data1 = EntityUtils.toString(response1.getEntity());
                    System.out.println("response "+data1);



                    JSONObject jo = new JSONObject(data1);

                    Log.d("response", jo.toString(4));
                    if(jo.getString("err-code").equals("0"))
                    {


                    JSONArray jArray = jo.getJSONArray("all_advertisement");  
                    Log.d("Array", jArray.toString(4));




                    for (int j=0; j < jArray.length(); j++)
                    {
                        try {
                            JSONObject jsob = jArray.getJSONObject(j);

                            mname = jsob.getString("name");   
                            mobile = jsob.getString("mbl_nmbr");   
                            state = jsob.getString("states");   
                            desc = jsob.getString("desc");   


                            nameArray.add(jsob.getString("name").toString());

                            mobileArray.add(jsob.getString("mbl_nmbr").toString());

                            stateArray.add(jsob.getString("states").toString());

                            descArray.add(jsob.getString("desc").toString());

                            HashMap<String, String> adHash = new HashMap<String, String>();

                            adHash.put("name", jsob.getString("name").toString());

                            adHash.put("mbl_nmbr", jsob.getString("mbl_nmbr").toString());

                            adHash.put("states", jsob.getString("states").toString());

                            adHash.put("desc", jsob.getString("desc").toString());

                            //adsArray.add(adHash);

                              // adapter = new ArrayAdapter<String>(ViewAdvertise.this, R.layout.listrow, stateArray);   

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

                    }

                    }
                }
                catch (Exception e) 
                {
                    e.printStackTrace();
                }
            }
            else
            {
                final AlertDialog.Builder alert = new AlertDialog.Builder(ViewAdvertise.this);
                alert.setTitle("Alert !");
                alert.setMessage("No Internet connection ");
                alert.setPositiveButton("Ok",
                        new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,
                            int whichButton) 
                    {
                        dialog.dismiss();


                    }
                });
                runOnUiThread(new Runnable() 
                {
                    public void run() 
                    {
                        //pDialog.dismiss();
                        alert.show();
                    }
                });
            }

            return params;

        }             

        @SuppressLint("NewApi")
        @Override
        protected void onPostExecute(String[] result) 
        {


            super.onPostExecute(result);
            //  adapter.clear();
            /*adapter.notifyDataSetChanged();  */
            //  adapter.clear();
            adapter = new ArrayAdapter<String>(ViewAdvertise.this, R.layout.listrow, stateArray);   

            list.setAdapter(adapter);   

            adapter.notifyDataSetChanged();



            //  adapter.addAll(stateArray);



            /*tv1.setText(desc);
            tv2.setText(mname);
            tv3.setText(mobile);
            tv4.setText(state);*/

            System.out.print("Original contents of al: ");
            Iterator<String> itr = nameArray.iterator();
            while (itr.hasNext()) {
                String element = itr.next();
                System.out.print(element + " ");
            }
            System.out.println();   


            System.out.print("Original contents of al: ");
            Iterator<String> itr1 = stateArray.iterator();
            while (itr.hasNext()) {
                String element = itr1.next();
                System.out.print(element + " ");
            }
            System.out.println();   
            //  ListView lv = getListView();

            // listening to single list item on click
            list.setOnItemClickListener(new OnItemClickListener() {
                int position;

                public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {

                    // selected item 
                    // String product = ((TextView) view).getText().toString();
                    long index = parent.getSelectedItemId();
                    this.position=position;
                    // Launching new Activity on selecting single List Item
                    Intent i = new Intent(getApplicationContext(), ViewAds.class);
                    // sending data to new activity

                    i.putStringArrayListExtra("nameArray", nameArray);
                    i.putStringArrayListExtra("mobileArray", mobileArray);
                    i.putStringArrayListExtra("stateArray", stateArray);
                    i.putStringArrayListExtra("descArray", descArray);

                    //i.putExtra("adArray", adsArray);

                    i.putExtra("position", position);
                    startActivity(i);

                }
            });
        }
    }
}
}当您使用jo.getjsonarrayal\u广告时;android将在jo对象中查找带有键all_广告的jsonArray。但是,您发布的示例JSON字符串不包含任何具有该键的数组。您的解析机制应该如下所示:

String response = //contains your JSON String. 
JSONObject responseObject = new JSONObject(response);
JSONArray jArray = responseObject.getJSONArray("data");
//Since you have only one object in the data array, 
//you can use get(0) but incase you have multiple objects 
//just loop through the array to retrieve all 
//required objects from the data array.
String id = jArray.get(0).getString("id");
String desc = jArray.get(0).getString("desc");
...
...

您在JSONArray jArray=jo.getJSONArrayall_广告上有一个错误;请参阅jo上的标记以查找正确的标记,您的日志显示org.json.JSONException:No value for all_advisements,但没有任何标记作为all_advision,而是将值存储在数据库中。请检查我在上面编辑的响应…@user3736827发布json响应here@Raghunandan我已经按照你说的方式发布了回复,检查你的回复是否包含所有的广告因此,再次检查服务器端响应,或者更改此行JSONArray jArray=jo.getJSONArrayall\u;进入JSONArray jArray=jo.getJSONArraydata;
if ($user_id = getUser($data -> login_token))
{
    $status_key     = mysql_real_escape_string($data->status_key);
    $msg = array();

    $get_state = mysql_fetch_assoc(mysql_query("SELECT State FROM advertisement where id='$user_id'"));
    $sql = mysql_query("SELECT * FROM advertisement WHERE states='{$get_state['State']}'");

    if (mysql_affected_rows() > 0)
    {
        while($add = mysql_fetch_assoc($sql))
        {
            $msg[] = $add;
        }
        return array("err-code" => '0', "data" => $msg);
    }
    else
    {
        return array("message" => "There is no Add for you.", "err-code" => "400");
    }
}
else
{
    return array("err-code"=>"1","data"=>"Session Expired");
}
String response = //contains your JSON String. 
JSONObject responseObject = new JSONObject(response);
JSONArray jArray = responseObject.getJSONArray("data");
//Since you have only one object in the data array, 
//you can use get(0) but incase you have multiple objects 
//just loop through the array to retrieve all 
//required objects from the data array.
String id = jArray.get(0).getString("id");
String desc = jArray.get(0).getString("desc");
...
...