在发布我的问题之前,我花了几个小时查看几个相似的答案。PHP:无法对多行的json进行编码
我从我的数据库中的表中检索数据,并且我想将它编码成JSON。但是,json_encode()的输出仅在表格有单行时才有效。如果有多行,则在http://jsonlint.com/处的测试会返回错误。
这是我的查询:
$result = mysql_query($query);
$rows = array();
//retrieve and print every record
while($r = mysql_fetch_assoc($result)){
$rows['data'] = $r;
//echo result as json
echo json_encode($rows);
}
这让我下面的JSON:
{
"data":
{
"entry_id":"2",
"entry_type":"Information Relevant to the Subject",
"entry":"This is my second entry."
}
}
{
"data":{
"entry_id":"1",
"entry_type":"My Opinion About What Happened",
"entry":"This is my first entry."
}
}
当我运行在http://jsonlint.com/测试,它返回此错误:
Parse error on line 29:
..."No comment" }}{ "data": {
---------------------^
Expecting 'EOF', '}', ',', ']'
不过,如果我只使用JSON的前半部分...
{
"data":
{
"entry_id":"2",
"entry_type":"Information Relevant to the Subject",
"entry":"This is my second entry."
}
}
...或者,如果我只测试下半年...
{
"data":{
"entry_id":"1",
"entry_type":"My Opinion About What Happened",
"entry":"This is my first entry."
}
}
...相同的测试将返回 “有效的JSON”。
我想要的是能够在表中的每一行输出一个单一的[有效的] JSON。
任何建议将非常感激。
太感谢你了!所有的解决方案都可以工作,而你提供了最全面的解释。这不仅是正确的,但我完全忽略了其他的例子做放置json_encode函数while循环之外。我很抱歉没有注意到,并感谢您的时间。 – asraelarcangel 2012-02-19 20:22:53