だから私はこの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 が出力されたことがわかりました。しかし、返信のおかげで、問題の原因を特定するのに役立ちました!