Java 尝试从MySQL查询解析JSON时出现异常

Java 尝试从MySQL查询解析JSON时出现异常,java,php,mysql,json,Java,Php,Mysql,Json,我在Java中解析MySQL的JSON响应时遇到问题 try { HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost("http://parkfinder.zxq.net/default.php"); httppost.setEntity(new UrlEncodedFormEntity(coordinatesToSend)); HttpResponse

我在Java中解析MySQL的JSON响应时遇到问题

try {
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://parkfinder.zxq.net/default.php");
    httppost.setEntity(new UrlEncodedFormEntity(coordinatesToSend));
    HttpResponse response = httpclient.execute(httppost);
    Log.d("HTTP Client", "HTTP Request made");

    HttpEntity entity = response.getEntity();
    inputStream = entity.getContent();
    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,
            "iso-8859-1"), 8);
    sb = new StringBuilder();
    sb.append(bufferedReader.readLine() + "\n");

    String line = "0";
    while ((line = bufferedReader.readLine()) != null) {
        sb.append(line + "\n");
    }
    inputStream.close();
    bufferedReader.close();
    result = sb.toString();
    Log.d("RESULT", result);
    JSONObject json_data = new JSONObject(result);
    Log.d("JSON","Finished");
    JSONArray nameArray = json_data.names();
    JSONArray valArray = json_data.toJSONArray(nameArray);
    for (int i = 0; i < nameArray.length(); i++) {
        Log.d("NAMES", nameArray.getString(i));
    }
    for (int i = 0; i < nameArray.length(); i++) {
        Log.d("NAMES", nameArray.getString(i));
    }

} catch (Exception e) {
    // TODO: handle exception
}
第行显示正确的结果:

2[{"longtitude":"32.32","latitude":"33.12"}]
然而

Log.d("JSON","Finished");
从来没有人打过电话, 所以问题似乎在这条线上

JSONObject json_data = new JSONObject(result);
这是一个教程,我在网上和这个网站上看到了很多关于它的例子,其中有些错误,但不是这个

任何帮助都会很好! 谢谢

编辑: printStackTrace()输出:

php代码:

<?php
$host = "localhost";
$user = "**MASKED**";
$password = "**MASKED**";
$database = "parkfinder_zxq_coordinates";
$connection = mysql_connect($host, $user, $password) or die("couldn't connect to server");
$db = mysql_select_db($database, $connection) or die("couldn't select database.");
//$request_parked = $_REQUEST['parked'];
$request_long = $_REQUEST['longtitude'];
$request_lat = $_REQUEST['latitude'];
//if ($request_parked == 'FIND') {
$q = mysql_query("SELECT * FROM Coordinates");
while ($e = mysql_fetch_assoc($q))
    $output[] = $e;

print (json_encode($output));
//}

mysql_close();
?>
您的JSON数据
2[{“longtude”:“32.32”,“latitude”:“33.12”}]
无效(数字
2
不是正确的JSON语法)

我可以建议你的意思是

[{"longtitude":"32.32","latitude":"33.12"}]`
(即开始时没有
2


您可以使用上的验证程序检查JSON代码。

因此,很可能解析失败,引发异常,并且您的异常处理程序为空,因此不会发生任何事情。。。完成“TODO”,至少让catch块吐出异常错误文本;在您的
catch
block中,我添加了PHP代码,我没有对从mysqlWell获得的输出进行任何修改
2
就是您的异常跟踪指出JSON代码无效的地方,并且它肯定不会在任何时候进行解析。
2
来自哪里?它是从MySQL返回的还是从HTML连接返回的?我会建议也许MySQL是正确的,但是您的HTML阅读代码出于某种原因添加了2?我粘贴的是整个php文件。它没有任何html界面,只用于与设备交互。你知道php有什么问题吗?我不认为你的php有什么问题,我认为你的Java代码有问题。与其使用BufferedReader来读取HttpEntity内容,不如试着摆脱所有手动读取的代码,只使用
String result=EntityUtils.toString(entity)-它为您完成阅读内容的所有艰苦工作。这可能有助于消除潜在的错误源。有关此类的详细信息,请参阅。
<?php
$host = "localhost";
$user = "**MASKED**";
$password = "**MASKED**";
$database = "parkfinder_zxq_coordinates";
$connection = mysql_connect($host, $user, $password) or die("couldn't connect to server");
$db = mysql_select_db($database, $connection) or die("couldn't select database.");
//$request_parked = $_REQUEST['parked'];
$request_long = $_REQUEST['longtitude'];
$request_lat = $_REQUEST['latitude'];
//if ($request_parked == 'FIND') {
$q = mysql_query("SELECT * FROM Coordinates");
while ($e = mysql_fetch_assoc($q))
    $output[] = $e;

print (json_encode($output));
//}

mysql_close();
?>
[{"longtitude":"32.32","latitude":"33.12"}]`