Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSON语法错误的php函数?_Java_Php_Android_Json - Fatal编程技术网

Java JSON语法错误的php函数?

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

我在Android应用程序中解析JSon数据时遇到问题。我使用PHP脚本从mysql获取数据,并将其放入JSON中。问题是我可以打印结果,并且我可以看到我的“人员”表中的所有项目

但是当数据被传递到stringbuilder时,一切都会出错。在解析JSON的数组后,是否说数组中只有一个对象? 我希望你能帮助我或给我一些建议

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));