我之前问过一个问题,都是围绕着一个JSON格式化的问题。我有一个 PHP 页面,它只是从 MYSQL 数据库中获取行,然后返回它们。但是,我不确定如何格式化它们,所以我得到的所有列都是一组,并且对于每一行,它都会创建一个新的集合。我不确定对此类内容进行编码的常见做法是什么。
例如这就是我想要的(如果它是正确的):
{ "message": [
{
"chat":"Hello, world!",
"time":"2014-05-09 17:32:00",
"username":"Josue"
},
{
"chat":"This is my second message.",
"time":"2014-05-09 17:32:05",
"username":"Josue"
}
]
}
这样,我可以使用 $.parseAJAX 进行解析,并访问我的数据,例如:data.message[0].chat
,它会返回“Hello world!”。
这是我目前正在做的事情:
$SQL = sprintf('SELECT time_sent, chat, username FROM Messages where time_sent >= date(\'%s\')', $last_chat_time);
$result = mysql_query($SQL);
$messages = Array();
while ( $row = mysql_fetch_assoc($result) ) {
$messages[] = 'chat';
$messages[] = $row['chat'];
$messages[] = 'time';
$messages[] = $row['time_sent'];
$messages[] = 'username';
$messages[] = $row['username'];
}
$loopCount = count($chats);
if(count($messages) > 0){
/*
$sexyJSON = '{message: [';
for($i = 0; $i < $loopCount; $i++){
$sexyJSON .= '{"chat":"'.$chats[$i].'","time":"'.$times[$i].'","username":"'.$usernames[$i].'"},';
}
$sexyJSON = substr($sexyJSON,0,strlen($sexyJSON)-1);
$sexyJSON .= ']}';
$newMessages = $sexyJSON;
echo $sexyJSON;
*/
echo json_encode($messages);
}
当我简单地编码我的数组时,它会返回如下内容:
["chat","Hello, world!","time","2014-05-09 17:32:00","username","Josue","chat","hmmm","time","2014-05-09 17:48:34","username","asdf"]
如果要将消息、日期与日期、用户名与键值对中的用户名进行群聊,我需要做什么?
最佳答案
mysql_fetch_assoc 的格式应该是
array('chat'=>'Some chat', 'time_sent'=>'123456', 'username'=>'abcdefg')
json_encode 会直接将其转换为
{"chat":"Some chat", "time_sent":"123456", "username":"abcdefg"}
所以在你的循环中,如果你简单地执行 $mesages[] = $row;
并保持你的 json_encode 调用不变,它应该如上所示工作。但是,您可以更改 SQL 语句,为列指定一个别名,以便 time_sent
仅显示为属性 time
关于javascript - 如何正确格式化 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23575785/