ハマログ

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

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日


関連記事

iOS7で利用できなくなったUDIDのおはなし

こんにちは、かねこです。 はじめに iOS7上で、デベロッパービルドでAdHoc…

Github Copilot Labs

GitHub Copilotスゴイ 控えめに言って神。 最近「神」という言葉が形…

PHP5.6でカード決済できない

こんにちはいけしまです。もう少しで冬休みですね。早い方はもうお休みでしょうか。 …


← 前の投稿

次の投稿 →