PHP的json_decode无法解码有效的JSON

3

So I have this JSON object:

[
    {
        "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和这个解析器都正确解析它并且没有报错。PHP的json_last_error方法也没有抛出任何错误。
我认为不存在的输出可能与对象具有多维数组有关,但我不确定。你认为呢?
编辑:
这里有一些背景信息:
这个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对象和一个数字1。但感谢回复,它们有助于区分问题的来源!


2
对我来说可以运行:http://codepad.org/7nfvsQS0 - gen_Eric
你是如何获取这个JSON字符串的? - gen_Eric
1
太疯狂了。我们都使用了相同的HEREDOC分隔符。哈。我认为这有点巧合。http://codepad.org/LyRSQNPG - Layke
1
你可能只是在错误地使用它。$obj = json_decode($yourstring); echo $obj[0]->branch_id; // would display 1 - WWW
@Layke:我总是使用能够说明文本类型的分隔符,比如 XMLHTML 或者 JSON :-P - gen_Eric
显示剩余3条评论
2个回答

1

您的JSON没有任何问题。正如您所说,它可以正确解析。只是让您知道,当您“解码”时,不会输出任何内容。您仍然需要对其进行处理。不要期望在解码后看到转储。

请参见此处:

http://codepad.org/LyRSQNPG


0

这是一个样例 JSON 解码。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接