JSON错误:有效json文本上的未终止对象

时间:2016-03-12 12:22:56

标签: php android mysql json

我遇到了JSON问题。在我的网站空间我托管一个将mysql请求转换为JSON格式的php文件。然后Android设备读取该JSON文件并处理图中的数据(温度和湿度)。

PHP-代码:

<?php
include("connect.php");

// SQL Query abschicken
$result = mysql_query("SELECT * FROM classpidb ORDER BY ID DESC LIMIT 1000");
    //Schleife bis alle Eintragungen in Array gespeichert
    $listenArray["Liste"] = array();
    while($row = mysql_fetch_array($result)) {
        $listeneintrag = array();
        $listeneintrag["ID"] = $row["ID"];
        $listeneintrag["Time"] = $row["Time"];
        $listeneintrag["Temp"] = $row["Temp"];
        $listeneintrag["Humi"] = $row["Humi"];
        array_push($listenArray["Liste"], $listeneintrag);
    }
    //Ausgabe im JSON Format
    $listenArray["Status"] = ["0","Select erfolgreich"];
    echo json_encode($listenArray);


//Verbindung trennen.
mysql_close($verbindung);

?>

Android中的JSON-Parsing(结果是JSON-File读为字符串):

JSONObject jsonErgebnis = new JSONObject(result);
            JSONArray statusArray = jsonErgebnis.getJSONArray("Status");
            int status = statusArray.getInt(0);
            if(status == 0)
            {
                JSONArray datenArray = jsonErgebnis.getJSONArray("Liste");
                //for (int i = 0; i < datenArray.length(); i++) {
                for (int i = datenArray.length() - 1; i >= 0; i--) {
                    JSONObject einzelsatz = datenArray.getJSONObject(i);

                        ...

                firstdatatemp.addXValue(einzelsatz.getString("Time"));
                        firstdatatemp.addEntry(new Entry((float) einzelsatz.getDouble("Temp"), set.getEntryCount()), 0);

                        ...

                    // add a new x-value first
                    firstdatahumi.addXValue(einzelsatz.getString("Time"));
                    firstdatahumi.addEntry(new Entry((float) einzelsatz.getDouble("Humi"), set.getEntryCount()), 0);
                }
            }

如果我使用SELECT * FROM classpidb ORDER BY ID DESC LIMIT 100,它可以正常工作。如果我使用1000而不是100,我总是得到&#34;未终止的对象在角色......&#34;错误。 CodeBeautifier说我的JSON文本有效。

1 个答案:

答案 0 :(得分:0)

找到解决问题的方法:

Android没有完成阅读完整的php响应,因此我用

替换了阅读响应的错误代码
BufferedReader r = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder total = new StringBuilder();
String line;
while ((line = r.readLine()) != null) {
      total.append(line);
}