【发布时间】:2012-03-10 06:11:39
【问题描述】:
在发布我的问题之前,我已经花了几个小时查看了几个类似的答案。
我正在从我的数据库中的表中检索数据,并且我想将其编码为 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。
任何建议都将不胜感激。
【问题讨论】:
-
我发现您的问题对于所需的输出过于含糊。是否应该有一个包含关联数组索引数组的
data元素?还是应该有索引数组——每个数组都有一个包含关联数据的元素 (data)?就个人而言,我认为data在结构中根本没有任何好处——它只是形成了不必要的数组深度。