1

我创建了一个 json 输出,但得到了这些错误,有什么想法吗?!

代码 1:

public function getChatRoomData($uid, $name, $mess, $_roomID)
{
    mysql_query("INSERT INTO _roomData(uid, userName, messageText, roomID, postedAt) VALUES('$uid', '$name', '$mess', '$_roomID', NOW())");
    return mysql_query("SELECT * FROM _roomData WHERE roomID = '$_roomID';"); 

}

代码 2:

if ($tag == 'roomEnter') {
            $userID = $_POST['_uniqeID'];
            $userName = $_POST['_name'];
            $userMessage = $_POST['_message'];
            $roomID = $_POST['_roomID'];
            $queryFunctions = $db->getChatRoomData($userID , $userName, $userMessage, $roomID);
            $rows = array();
                        while($result = mysql_fetch_assoc($queryFunctions)) 
                        {
                                $rows["uid"] = $result["uid"];
                                $rows["name"] = $result["userName"];
                                $rows["roomDetails"]["message"] = $result["messageText"];

                        }
                         echo json_encode($rows);
            }

日志错误:

07-30 18:59:46.843: E/JSON(26633): <br />
07-30 18:59:46.843: E/JSON(26633): <b>Parse error</b>:  syntax error, unexpected '}' in <b>/home/merlinga/public_html/_mess/index.php</b> on line <b>106</b><br />
07-30 18:59:46.944: E/JSON Parser(26633): Error parsing data org.json.JSONException: Value <br of type java.lang.String cannot be converted to JSONObject
07-30 19:02:30.293: E/JSON(26633): <br />
07-30 19:02:30.293: E/JSON(26633): <b>Parse error</b>:  syntax error, unexpected '}' in <b>/home/merlinga/public_html/_mess/index.php</b> on line <b>106</b><br />
07-30 19:02:30.293: E/JSON Parser(26633): Error parsing data org.json.JSONException: Value <br of type java.lang.String cannot be converted to JSONObject
4

2 回答 2

3

这里还有一个错误。您$rows['..'] = $results['xxx']在循环的每次迭代中分配。您应该使用 $rows[] = xxx 并为每次迭代添加一个新数组或对象到 rows 数组。

修复您收到的第一个语法错误,然后对另一个错误使用类似的内容:

        $rows = array();
        while($result = mysql_fetch_assoc($queryFunctions)) 
        {
             $row = array();
             $row['uid'] = $result['uid'];
             $row['name'] = $result['userName'];
             // or just $rows[] = $result; 
             // see below.

             $row["roomDetails"] = array();
             $row["roomDetails"]["message"] = $result["messageText"];
             $rows[] = $row;
         }
        echo json_encode($rows);

使用和反对使用$rows[] = $results而不是将结果映射到新数组或对象的原因:

优点:

  1. 添加新属性/列时不必更新此层

缺点

  1. 和上面一样。您不想公开的新属性/列可能会泄漏并导致更大的 HTTP 响应,甚至更糟:安全风险。

  2. 您可能希望使用此层将表列映射到具有不同命名和聚合属性的视图模型

于 2012-07-30T14:51:40.433 回答
1

您的 PHP 代码中有语法错误,这会导致错误消息显然不是 JSON 输出,当您尝试将其视为 JSON 时会导致更多错误。

检查您的 PHP 代码,特别是在第 106 行附近,看看是什么导致了问题。

于 2012-07-30T14:42:55.863 回答