JSON の難題: json_encode のバックスラッシュの異常を解明する
JSON データ エンコードの分野では、json_encode 関数は長い間信頼できるツールでした。しかし、最近遭遇した出来事により、不可解な疑問が生じました。なぜ json_encode は不要なバックスラッシュを追加するのでしょうか?
この謎を詳しく調べるために、提供されたコードを調べてみましょう:
print_r($result); echo json_encode($result);
print_r コマンドは、期待通りの連想配列。 json_encode が適用されると、配列が JSON に変換され、有効であるように見えます。しかし、さらに詳しく調べると、隠されたスラッシュが現れます。
{ "logo_url":"http:\/\/mysite.com\/uploads\/gallery\/7f\/3b\/f65ab8165d_logo.jpeg", "img_id":"54", "feedback":{"message":"File uploaded","success":true} }
なぜこれらの無関係なバックスラッシュがあるのでしょうか?さらにデバッグすると、物語のねじれが明らかになります。この異常は json_encode 自体ではなく、後続の parseJSON 呼び出しで発生します。 data.toSource() を使用して JavaScript データを調べると、JSON に準拠していない文字列が見つかります:
({response:"{\"logo_url\":\"http:\/\/storelocator.com\/wp-content\/uploads\/gallery\/7f\/3b\/71b9520cfc91a90afbdbbfc9d2b2239b_logo.jpeg\",\"img_id\":\"62\",\"feedback\":{\"message\":\"File uploaded\",\"success\":true}}", status:200})
解決策:
この問題を解決する鍵は次のとおりです。 json_encode に「JSON_UNESCAPED_SLASHES」オプションを指定する際に。 PHP バージョン 5.4 で導入されたこのオプションは、関数がスラッシュにバックスラッシュを追加することを効果的に防止します。
json_encode($array,JSON_UNESCAPED_SLASHES);
この知識を活用すると、不要なバックスラッシュの謎が解決され、現実逃避的な干渉なしでシームレスな JSON エンコードが可能になります。 !
以上が「json_encode」が JSON 出力に不要なバックスラッシュを追加するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。