ハマログ

株式会社イーツー・インフォの社員ブログ

Laravelのjsonレスポンスでスラッシュをエスケープしない

Laravelでjson形式のレスポンスを返却する際に、内部でjson_encode関数が利用されるため、スラッシュがエスケープされて表示されます。

return response()->json([
    "active" => true,
    "iss" => "http://www.yahoo.co.jp/",
    "scope" => "openid"
]);

レスポンス

{
"active":true,
"iss":"http:\/\/www.yahoo.co.jp\/",
"scope":"openid"
}

json_encodeのJSON_UNESCAPED_SLASHESを指定すると良さそうです。
ドキュメントを確認すると以下の引数定義のため、
省略していたレスポンスコードなどをまとめて指定するようにします。

response()->json($data, $status, $headers, $options))

実装

return response()->json([
    "active" => true,
    "iss" => "http://www.yahoo.co.jp/",
    "scope" => "openid"], 200, ['Content-Type' => 'application/json'], JSON_UNESCAPED_SLASHES);

レスポンス

{
"active":true,
"iss":"http://www.yahoo.co.jp/",
"scope":"openid"
}

成功しました。JSON_PRETTY_PRINTをよく指定するようなので、合わせて指定する場合は以下のようになります。

return response()->json([
    "active" => true,
    "iss" => "http://www.yahoo.co.jp/",
    "scope" => "openid"], 200, 
    ['Content-Type' => 'application/json'], JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT);

以上です。

JSONOAuthOpenIDPHP

  kaneko tomo   2016年8月8日


関連記事

スプレッドシートで日付/時刻を入力したとき、値がずれる・見慣れない形式になる

スプレッドシートにて、下記ショートカットキーにて日付/時刻を入力したとき、値がず…

Invalid Argument Exception: Only mailables may be queued. in

Laravelの少し昔のプロジェクトから、今進めているLaravel5.7にメー…

Amazon Linux 2のExtras LibraryでインストールしたPHP7.2をPHP7.4に変更する

しばらくほったらかしだったので少し前にAmazon Linux 2にExtras…


← 前の投稿

次の投稿 →