Php JSON编码未给出正确的JSON字符串
我试图在PHP中回显一个json字符串,当我在JSONlint中验证json字符串时,该字符串从mySql数据库Bt检索数据,它给出错误:Php JSON编码未给出正确的JSON字符串,php,iphone,mysql,json,Php,Iphone,Mysql,Json,我试图在PHP中回显一个json字符串,当我在JSONlint中验证json字符串时,该字符串从mySql数据库Bt检索数据,它给出错误: Parse error on line 4: ...placesname": "abc"}{ "0": "abc", ----------------------^ Expecting 'EOF', '}', ',', ']' 我的PHP代码是: $query = mysql_query("SELECT placesname FROM Plac
Parse error on line 4:
...placesname": "abc"}{ "0": "abc",
----------------------^
Expecting 'EOF', '}', ',', ']'
我的PHP代码是:
$query = mysql_query("SELECT placesname FROM Places;");
while ($row = mysql_fetch_array($query)){
echo json_encode($row);
}
您正在将所有行追加到一个字符串中。您需要创建一个行数组,然后对该数组进行
json\u编码
您创建的JSON如下所示:
{"key": "value", "key2": "value2"}{"key": "value", "key2": "value2"}{"key": "value", "key2": "value2"}
[
{"key": "value", "key2": "value2"},
{"key": "value", "key2": "value2"},
{"key": "value", "key2": "value2"}
]
这不是有效的JSON。它需要如下所示:
{"key": "value", "key2": "value2"}{"key": "value", "key2": "value2"}{"key": "value", "key2": "value2"}
[
{"key": "value", "key2": "value2"},
{"key": "value", "key2": "value2"},
{"key": "value", "key2": "value2"}
]
如果对对象数组进行json\u编码
我不是PHP专家,但可以尝试以下方法:
$query = mysql_query("SELECT placesname FROM Places;");
$rows = Array();
while ($row = mysql_fetch_array($query)){
$rows[] = $row;
}
echo json_encode($rows);
您正在将所有行追加到一个字符串中。您需要创建一个行数组,然后对该数组进行json\u编码
您创建的JSON如下所示:
{"key": "value", "key2": "value2"}{"key": "value", "key2": "value2"}{"key": "value", "key2": "value2"}
[
{"key": "value", "key2": "value2"},
{"key": "value", "key2": "value2"},
{"key": "value", "key2": "value2"}
]
这不是有效的JSON。它需要如下所示:
{"key": "value", "key2": "value2"}{"key": "value", "key2": "value2"}{"key": "value", "key2": "value2"}
[
{"key": "value", "key2": "value2"},
{"key": "value", "key2": "value2"},
{"key": "value", "key2": "value2"}
]
如果对对象数组进行json\u编码
我不是PHP专家,但可以尝试以下方法:
$query = mysql_query("SELECT placesname FROM Places;");
$rows = Array();
while ($row = mysql_fetch_array($query)){
$rows[] = $row;
}
echo json_encode($rows);
试试这个
$query = mysql_query("SELECT placesname FROM Places;");
$data = array();
while ($row = mysql_fetch_array($query)){
$data[]=$row['placesname'];
}
echo json_encode($data);
试试这个
$query = mysql_query("SELECT placesname FROM Places;");
$data = array();
while ($row = mysql_fetch_array($query)){
$data[]=$row['placesname'];
}
echo json_encode($data);
请显示完整的JSON字符串和$row
的print_r()
请显示完整的JSON字符串和$row
@IphoneBites的print_r()
:例如,没有逗号,因为您没有在行之间输出逗号,JSON_encode
只能编码您给它的内容。您需要在循环前输出一个[
,在每行后输出一个,
,然后在循环后输出一个]
。(您可能希望抑制最后一行后面的尾随逗号。它在JSON中有效,但这并不意味着所有JSON解析器都正确,尤其是那些依赖eval
并在IE上运行的解析器。)@t.J.Crowder-实际上,尾随逗号不是有效的JSON:(但它是有效的JavaScript!)@Skilldrick:
我真的对此感到震惊,但在浏览了中的语法之后,我不得不同意这一点——它不是有效的JSON。应该是,但显然不是。sigh@T.J.Crowder-是的,应该是:)虽然我理解为什么不是这样-使解析器更简单,IE在eval
ed时可以工作。Tbf,json.org上的铁路图确实暗示了这一点,但没有明确说明。@IphoneBites:例如,没有逗号,因为行之间没有输出逗号,json\u encode
只能对您提供的内容进行编码。您需要在循环前输出一个[
,在每行后输出一个,
,然后在循环后输出一个]
。(您可能希望抑制最后一行后面的尾随逗号。它在JSON中有效,但这并不意味着所有JSON解析器都正确,尤其是那些依赖eval
并在IE上运行的解析器。)@t.J.Crowder-实际上,尾随逗号不是有效的JSON:(但它是有效的JavaScript!)@Skilldrick:
我真的对此感到震惊,但在浏览了中的语法之后,我不得不同意这一点——它不是有效的JSON。应该是,但显然不是。sigh@T.J.Crowder-是的,它应该是:)虽然我理解为什么它不是-使解析器更简单,IE将在eval
ed.Tbf时工作。json.org上的铁路图确实暗示了这一点,但没有明确说明。