3

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

4

2 に答える 2

1

JSON に問題はありません。あなたが言うように、それは正しく解析されます。ご存知のように、「デコード」すると何も出力されません。あなたはまだそれで何かをしなければなりません。デコード後にダンプが表示されることを期待しないでください。

ここを参照してください:

http://codepad.org/LyRSQNPG

于 2012-10-25T20:02:46.197 に答える
0

これはサンプルの json デコードです。

$jsonDayArray    = $_REQUEST['jsonDayArray'];
    $jsonDayArray    = str_replace("\\","",$jsonDayArray);
    $DayArray = array();
    $DayArray = json_decode($jsonDayArray, true);
于 2012-10-30T08:52:26.823 に答える