我使用下面的代碼(從mysql中檢索數據)並且它在Android模擬器版本4 中運行時沒有問題,但是當我使用在2.1版本的結果相同的代碼出現在logcat的parssingorg.json.JSONException:無法將類型java.lang.String的值轉換爲JSONArray
,這是錯誤:
parssing error org.json.JSONException: A JSONArray text must start with '[' at character 1 of <br />
和此使用2.2 parssingorg.json.JSONException時是誤差:類型的java.lang中的價值。字符串不能轉換爲JSONArray
protected Void doInBackground(Void... params) {
MealActivity.foodList = new ArrayList<ItemInList>();
try
{
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair",k));
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://10.0.2.2/y.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs,"UTF-8"));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
}
catch(Exception e)
{
Log.e("log_tag", "Error in http connection "+e.toString());
}
//convert response to string
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"utf-8"),8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result=sb.toString();
}
catch(Exception e)
{
Log.e("log_tag", "Error converting result "+e.toString());
}
//parsing reesult
try{
Log.e("log_tag", " result before parsing " + result);
String foodName="";
int Description=0;
jArray = new JSONArray(result);
JSONObject json_data = null;
for (int i = 0; i < jArray.length(); i++) {
json_data = jArray.getJSONObject(i);
if(json_data!=null)
{
foodName=json_data.getString("Food");
Description=json_data.getInt("Calories");
item.setName(foodName);
item.setDescription(Description);
item.setSelected(false);
MealActivity.foodList.add(item);
item=new ItemInList();
}
}
的JSON部這給異常粘貼。我猜這是json的錯誤。 – Warpzit
你得到的只是一個普通的jsonobject而不是一個json數組...... – Warpzit
好吧,他們可能更新了json的實現......嘗試使用GSON並查看它是否只適用於1,或者不適用於這兩者。 – Warpzit