ホームページ > バックエンド開発 > PHPチュートリアル > 「json_encode」が JSON 出力に不要なバックスラッシュを追加するのはなぜですか?

「json_encode」が JSON 出力に不要なバックスラッシュを追加するのはなぜですか?

Linda Hamilton
リリース: 2024-11-13 00:41:01
オリジナル
957 人が閲覧しました

Why does `json_encode` add unwanted backslashes to my JSON output?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート