ハマログ

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

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日


関連記事

社内で「最近のフロントエンド事情」と題してReactを紹介しました

e2infoには”ランチMTG”という社内勉強会とLTが…

第13回Quesに参加してきた

半年に1回あるこのイベントがまたやってきた! QAエンジニアの活性化を目的とした…

AWS内部のEC2サーバからメール送信する際のIPアドレス逆引き設定

はじめに AWSのIP逆引き設定に苦労したのでメモ。苦労した原因は、知識&事前調…


← 前の投稿

次の投稿 →