所以我有这个 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 和此解析器都正确解析它并且不会引发错误。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。但是感谢您的回复,他们有助于区分问题的根源!