PHP json_decode无法解码有效的JSON

时间:2012-10-25 19:58:54

标签: php multidimensional-array json

所以我有这个JSON对象:

[
    {
        "branch_id": "1",
        "issue_id": "1",
        "user_id": "5",
        "parent_id": null,
        "level": "1",
        "name": "troll",
        "description": "yup",
        "add_date": "2012-10-24 20:26:04",
        "children": [
            {
                "branch_id": "2",
                "issue_id": "1",
                "user_id": "5",
                "parent_id": "1",
                "level": "2",
                "name": "sdad",
                "description": "dssfsd",
                "add_date": "2012-10-24 20:52:52",
                "children": [
                    {
                        "branch_id": "4",
                        "issue_id": "1",
                        "user_id": "5",
                        "parent_id": "2",
                        "level": "3",
                        "name": "fdgffd",
                        "description": "ghjjhjghjj",
                        "add_date": "2012-10-25 17:51:53",
                        "children": []
                    }
                ]
            }
        ]
    },
    {
        "branch_id": "3",
        "issue_id": "1",
        "user_id": "5",
        "parent_id": null,
        "level": "1",
        "name": "dgdfg",
        "description": "dfgfgdfg",
        "add_date": "2012-10-24 20:52:52",
        "children": []
    }
  ]

出于某种原因,当我尝试使用PHP的json_decode对其进行解码时,它不会输出任何内容。该对象不能无效,因为JSONLint和此parser都正确解析它并且不会抛出任何错误。 PHP自己的json_last_error方法也不会抛出任何错误。

我认为不存在的输出可能与具有多维数组的对象有关,但我不确定。你觉得怎么样?

编辑

这里有一点背景:

this file检索此JSON对象。它来自(开发中)API,并且此特定资源从某个“分支集合”返回JSON对象。 我用cUrl将这个JSON对象提取到PHP,这里是代码:

$ch = curl_init('http://skibb.it/api/issues/branches?issue_id=1');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
$branches = curl_exec($ch);
curl_close($ch);

这也应该没有错误,因为它正确获取了普通的JSON对象。但是当我尝试:

$branches = json_decode($branches);
var_dump($branches); //Or print_r($branches);

除了NULL之外,它不会输出任何内容。

最终编辑

是的,这很令人尴尬。在查看代码后发现,我在调试阶段意外地在编码过程中留下了一个print_r(),它输出了JSON对象和后面的数字。但感谢回复,他们有助于区分问题的来源!

2 个答案:

答案 0 :(得分:1)

您的JSON没有任何问题。如你所说,它正确解析。只是你知道,当你“解码”时,什么都没有输出。你仍然需要做点什么。不要指望在解码后看到转储。

见这里:

http://codepad.org/LyRSQNPG

答案 1 :(得分:0)

这是json解码的示例。

$jsonDayArray    = $_REQUEST['jsonDayArray'];
    $jsonDayArray    = str_replace("\\","",$jsonDayArray);
    $DayArray = array();
    $DayArray = json_decode($jsonDayArray, true);