我的解决方案是:
function format_json($str)
{
...
$str = preg_replace('/([a-z]+):/i', '"$1":', $str);
$wtr = array('""',',",');
$rpw = array('"',',');
return str_replace($wtr, $rpw, $str);
}
答案 0 :(得分:2)
JSON仅支持双引号字符串,并且必须引用所有属性名称。
答案 1 :(得分:2)
如前面的答案中所述,您需要在字符串中添加双引号。检查json字符串的一种非常快速和快速的方法是使用JSONLint。
以下是您将从JSONLint获得的输出:
Parse error on line 1:
{ m: [ {
-----^
Expecting 'STRING', '}'
因此您需要更改所有没有双引号的部分。例如:
{m: [ ...
将成为:
{"m": [ ...
评论后编辑:似乎字符串中的双引号未正确转义。例如:
{"m" : [ { "g": [ "32", "Brezilya-"Serie" A", "83", ...
Here -----------------------------^ and ^
应该是:
{"m" : [ { "g": [ "32", "Brezilya-\"Serie\" A", "83", ...
答案 2 :(得分:2)
尝试通过JSONLint运行您的JSON。首先,属性名称必须用双引号括起来。然后,字符串也必须用双引号括起来,而不是单引号:
{
"m": [
{
"g": [
32,
"Brezilya-SerieA",
.
.
.
答案 3 :(得分:2)
您可以使用此处http://pear.php.net/pepr/pepr-proposal-show.php?id=198
中的类来解析此字符串 require_once'JSON.php';
$ json = new Services_JSON();
$ data = $ json-> decode($ yourstring);
答案 4 :(得分:1)
在您的JSON中,您应该使用“”代替'',这将得到解决。
它是JSON中的一个约定,双qoutes将用于定义对象名称或对象。尝试使用在C ++中编写字符串来定义json的方式。