Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php JSON编码未给出正确的JSON字符串_Php_Iphone_Mysql_Json - Fatal编程技术网

Php JSON编码未给出正确的JSON字符串

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

我试图在PHP中回显一个json字符串,当我在JSONlint中验证json字符串时,该字符串从mySql数据库Bt检索数据,它给出错误:

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上的铁路图确实暗示了这一点,但没有明确说明。