json输出中的问题


issue in json output

我创建了一个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);
            }

Logcat错误:

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

这里还有另一个错误。在循环的每一次迭代中都要指定$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. 添加新属性/列时不必更新此层

Cons

  1. 同上。您不想公开的新属性/列可能会泄漏,并导致比必要的更大的HTTP响应,甚至更糟:存在安全风险。

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

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

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