Android org.json.JSONException:所有的广告都没有值
我已经创建了一个应用程序。在此应用程序中,有一个广告模块。本模块分为两部分: 制作广告 浏览广告 但是,当我点击VIE广告时,日志cat中出现以下错误。 下面的代码显示所有_播发都没有值。但我为参数输入的值已成功存储在数据库中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.
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");
...
...