我的解决方案是:
function format_json($str)
{
...
$str = preg_replace('/([a-z]+):/i', '"$1":', $str);
$wtr = array('""',',",');
$rpw = array('"',',');
return str_replace($wtr, $rpw, $str);
}
与前面的回答一样,您需要为字符串添加双引号。一个非常快速的检查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", ...
JSON只支持双引号字符串,并且所有的属性名必须用引号括起来。
尝试通过JSONLint运行JSON。首先,属性名必须用双引号括起来。然后,字符串也必须用双引号而不是单引号括起来:
{
"m": [
{
"g": [
32,
"Brezilya-SerieA",
.
.
.
您可以在这里用class解析这个字符串http://pear.php.net/pepr/pepr-proposal-show.php?id=198
require_once JSON.php,
$json = new Services_JSON();
data = json ->解码美元($ yourstring);
在你的JSON中,你应该使用" "而不是" ",这将得到解决。
JSON中的约定是用双引号来定义对象名或对象。尝试使用c++中编写字符串的方式来定义json .