AndroidアプリでMYSQLデータベースからデータを返そうとしていますが、アプリケーションを実行すると、返された結果をJSON配列に変換できません。「JSONException:タイプjava.lang.Stringの値をJSONArrayに変換できないという例外が発生しました。 「」
phpスクリプトがデータをJSON形式で返すことを確認し、解析する前の結果がnullではなく、返されたデータを保持します。この例外が発生するのはなぜですか?また、どのように解決できますか?私を助けてください
これは私のコードです:
private class LoadData extends AsyncTask<Void, Void, String> {
private String result = "";
private InputStream is = null;
private ProgressDialog progressDialog;
protected void onPreExecute()
{
this.progressDialog = ProgressDialog.show(AddFood.this, "","Loading......");
}
@Override
protected String doInBackground(Void... params)
{
MealActivity.foodList = new ArrayList<ItemInList>();
try
{
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("Name",entered_food_Name));
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://10.0.2.2/food.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());
}
Log.e("log_tag",result+ "result");
return result;
}
@Override
protected void onPostExecute(String result)
{
this.progressDialog.dismiss();
try{
Log.e("log_tag", " result before parsing " + result);
String foodName="";
int Description=0;
JSONArray jArray = new JSONArray(result);
JSONObject json_data=null;
for(int i=0;i<jArray.length();i++)
{
json_data = jArray.getJSONObject(i);
foodName=json_data.getString("Name");
Description=json_data.getInt("Calories");
item.setName(foodName);
item.setDescription(Description);
item.setSelected(false);
MealActivity.foodList.add(item);
}
}
catch(JSONException e){
Log.e("log_tag", "parssing error " + e.toString());
}
}}
これはphpスクリプトです:
<?php
$con1=mysql_connect("localhost" , "user","pass" ) ;
mysql_select_db("MYDB");
mysql_query("SET NAMES utf8");
$sql=mysql_query("select Name,Calories from food where Name LIKE '%".$_REQUEST['Name']."%' ");
while($row=mysql_fetch_assoc($sql))
$output[]=$row;
$data =json_encode($output);
print($data);
mysql_close();
?>
返されたデータ
E/log_tag(491): result before parsing [{"Name":"\u0627\u0641\u0648\u0643\u0627\u062f\u0648","Calories":"160"}]