omachizura

仕事メモ、役に立ったスキルをまとめています。


laravel jsonのレスポンスでデータが数値型ではなく文字列型になってしまう

ローカルの開発環境では発生しなかったのですが、本番環境で動かすと以下のような現象が発生しました。

例えば以下のデータをjsonでレスポンスするとデータが文字列型になってしまいました。

//レスポンスするデータ
りんご: 3
バナナ: 5

//レスポンスされたデータ(javascriptで受け取ったデータ)
りんご: '3'
バナナ: '5'

レスポンスの処理を以下のように修正すると、数値型のままレスポンスすることができました。

// return response()->json(["foo" => "bar"], 200); //修正前

return response()->json(["foo" => "bar"], 200, [], JSON_NUMERIC_CHECK); //修正後

ローカル環境では正しく動いていたので、phpやmysqlのバージョンや設定が関係しているのかもしれませんが、ひとまずこれで解決できました。