json输出中的问题

时间:2012-07-30 14:39:54

标签: php json

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

2 个答案:

答案 0 :(得分:3)

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

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

        $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. 添加新属性/列
  2. 时不必更新此图层

    缺点

    1. 与上述相同。您不希望公开的新属性/列可能会泄漏,导致HTTP响应超出必要的甚至更糟:安全风险。

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

答案 1 :(得分:1)

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

检查您的PHP代码,特别是第106行,并查看导致问题的原因。