ハマログ

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

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日


関連記事

集計処理の実装

大分間が空いてしまいましたが、前回の キーブレークを使った集計の実装を行ってみま…

Wordでエンコーディングを指定してhtmlファイルを保存する

気づいたら入社してそろそろ1カ月になろうとしてます。megです。 先日、Word…

AWS大規模障害とインフラ設計について

2019年8月23日(金)AWSの大規模障害が発生し、大手サイトやクラウドサービ…


← 前の投稿

次の投稿 →