java - 尝试从 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 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
}

这是MySQL访问和检索信息,并在战后解析它。

Log.d("RESULT", result);

该行发布了正确的结果:

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

但是

Log.d("JSON","Finished");

从来没有接到电话, 所以问题似乎出在这一行

JSONObject json_data = new JSONObject(result);

这件事取自教程,我在互联网和本网站上看到了很多示例,其中有一些指出的错误,但不是这个。

任何帮助都会很棒! 谢谢

编辑: printStackTrace() 输出:

0`5-14 21:38:18.639: WARN/System.err(665): org.json.JSONException: A JSONObject text must begin with '{' at character 1 of 2[{"longtitude":"32.32","latitude":"33.12"}]`

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[{"longtitude":"32.32","latitude":"33.12"}] 无效(数字 2 无效) t 正确的 JSON 语法)。

我可以建议你实际上的意思

[{"longtitude":"32.32","latitude":"33.12"}]`

(即开头没有 2)

您可以使用http://jsonlint.com/处的 validator 检查您的 JSON 代码。

关于java - 尝试从 MySQL 查询解析 JSON 时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10721663/

相关文章:

java - 如何使用 Java 检测 PC 已空闲 30 秒?

java - 无法转换为 java.io.Serializable

php - 使用PHP从S3流音频并支持Range

mysql - REPLACE INTO sql 查询有 2 个键?

MySQL 如果我改变它所在的列,索引会发生什么?

mysql - SQL - 如何选择多行

java - 索引 6 附近的悬空元字符 '*'

java - 基于 Java 服务器的 Web 应用程序中的 HTTP 状态代码

php - MySQL 链接表;一些最后的问题

php - PHP 中的简单 SQL 查询