Java JSON语法错误的php函数?
我在Android应用程序中解析JSon数据时遇到问题。我使用PHP脚本从mysql获取数据,并将其放入JSON中。问题是我可以打印结果,并且我可以看到我的“人员”表中的所有项目 但是当数据被传递到stringbuilder时,一切都会出错。在解析JSON的数组后,是否说数组中只有一个对象? 我希望你能帮助我或给我一些建议Java JSON语法错误的php函数?,java,php,android,json,Java,Php,Android,Json,我在Android应用程序中解析JSon数据时遇到问题。我使用PHP脚本从mysql获取数据,并将其放入JSON中。问题是我可以打印结果,并且我可以看到我的“人员”表中的所有项目 但是当数据被传递到stringbuilder时,一切都会出错。在解析JSON的数组后,是否说数组中只有一个对象? 我希望你能帮助我或给我一些建议 try{ HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://10.0.1.10/getAllPeople.php");
//httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
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,"iso-8859-1"),8);
sb = new StringBuilder();
sb.append(reader.readLine() + "\n");
String line="0";
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());
}
//paring data
int id;
double Lat;
double Long;
String hulp = "";
v3 = (TextView) findViewById(R.id.tv3);
//v3.setText("Resultaat: " + result);
try{
jArray = new JSONArray(result);
for(int i=0;i<jArray.length();i++){
JSONObject json_data = jArray.getJSONObject(i);
id = json_data.getInt("id");
Long = json_data.getDouble("long");
Lat = json_data.getDouble("lat");
hulp = hulp + "\n" + "Long: " + Long + " Lat: " + Lat;
mob.add(new MobieleFlitsers(id,Long,Lat));
}
for(int i=0;i<mob.size();i++){
hulp = " " + mob.size();
}
v3.setText(hulp);
}
catch(JSONException e1){
Toast.makeText(getBaseContext(), "Geen locatie's gevonden" ,Toast.LENGTH_LONG).show();
} catch (ParseException e1) {
e1.printStackTrace();
}
}
?>数组中只有一个对象。如果仔细观察JSON,您会发现它包含大量串联的数组,每个数组都包含单个对象。语法是错误的
基本上是在第一个对象之后终止数组 数组中只有一个对象。如果仔细观察JSON,您会发现它包含大量串联的数组,每个数组都包含单个对象。语法是错误的
基本上是在第一个对象之后终止数组 查看您的图像后,您的JSON似乎无效:
[{"id": 1, "long": 5000, "long": 5000}][{"id": 1, "long": 5000, "long": 5001}]
这应该是:
[{"id": 1, "long": 5000, "long": 5000}, {"id": 1, "long": 5000, "long": 5001}]
请注意,在当前代码中,每个对象
都用方括号括起来,而只有一个数组
将所有对象
括起来,并用逗号隔开
尝试将您的JSON输出放入以仔细检查其有效性。查看您的图像后,您的JSON似乎无效:
[{"id": 1, "long": 5000, "long": 5000}][{"id": 1, "long": 5000, "long": 5001}]
这应该是:
[{"id": 1, "long": 5000, "long": 5000}, {"id": 1, "long": 5000, "long": 5001}]
请注意,在当前代码中,每个对象
都用方括号括起来,而只有一个数组
将所有对象
括起来,并用逗号隔开
请尝试将JSON输出放到中,以仔细检查其有效性。要完成jakeclarkson的回答,请在PHP中完成
while ($row = mysql_fetch_row($q)) {
$output[]=$row;
print(json_encode($output));
}
到目前为止,在每一行打印整个json,因此基本上,它打印[1][1,2][1,2,3]。。。而不仅仅是最后一个。您只需在$output完成后提取打印:
while ($row = mysql_fetch_row($q)) {
$output[]=$row;
}
print(json_encode($output));
要完成jakeclarkson的回答,请在PHP中
while ($row = mysql_fetch_row($q)) {
$output[]=$row;
print(json_encode($output));
}
到目前为止,在每一行打印整个json,因此基本上,它打印[1][1,2][1,2,3]。。。而不仅仅是最后一个。您只需在$output完成后提取打印:
while ($row = mysql_fetch_row($q)) {
$output[]=$row;
}
print(json_encode($output));