1

次のJSON形式の文字列があります。

{

"hooks":[
        {
        "type":"subscribe",
        "id":1331741592.6925,
        "email":"JoeX@test-email.com",
        "status":"Active",
        "custom_fields":"{\"first_name\":\"Joe\",\"last_name\":\"X\"}",
        "ip_created":"24.199.200.142",
        "list_id":"33",
        "list_type":"internal",
        "list_name":"Administrator List 2",
        "list_optin":false
        },
        {
        "type":"subscribe",
        "id":1331741592.7067,
        "email":"JaneY@test-email.com",
        "status":"Active",
        "custom_fields":"{\"first_name\": \"Jane\",\"last_name\":\"Y\"}",
        "ip_created":"24.199.200.142",
        "list_id":"33",
        "list_type":"internal",
        "list_name":"Administrator List 2",
        "list_optin":false
        }
    ]

}

json_decode()PHP関数を使用して連想配列に入れたいと思います。

スクリプトを実行すると、デバッグでは新しい配列の値がとして表示されるnullため、デコードが失敗していると推測されます。PHP 5.3を実行していないため、を使用できませんjson_last_error()。コードは次のとおりです。

$hooks = (the JSON string from above);
$hooksArray = json_decode($hooks, true);

なぜ$hooksArray戻ってくるのか考えはありますnullか?

4

1 に答える 1

0

JSON 文字列は PHP ソース内にありますか? エスケープされたバックスラッシュを正しく解釈していない可能性があります。

参考までに、Python で次の実験を試みました。JSON データを REPL 経由で複数行の文字列にダンプし、json.loads() でデコードしました。custom_fields 文字列の最初のインスタンスで、文字列内の引用符が詰まっていました。複数行の文字列を調べたところ、すべてのエスケープがなくなり、引用符だけが残りました。

同じJSONデータを外部ファイルに入れて読み込んだところ、うまくいきました。

JSON データを外部ファイルに入れ、すべての '\"' インスタンスを '\\"' に置き換えたところ、最初の実験が機能し始めました。

多分それはあなたのためにも働くでしょう。

于 2012-06-27T14:11:30.207 に答える