解码json问题,返回空值


decoding json problem, returns null value

我的解决方案是:

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 .