最近、この奇妙な問題が発生しています。私は現在、Linux サーバーにデプロイしながら Windows 環境で開発しています。それが理想的ではないことはわかっていますが、この段階ではあまりできません。
私がしているのは、データベースからデータを取得し、結果の配列の JSON 応答を返すことだけですが、結果が異なり、フロントエンド アプリで問題が発生します。
私はこれをWindowsで取得しています:
{
"id":40,
"name":"test"
}
そしてこれはLinuxで:
{
"id":"40",
"name":"test"
}
私は実際にLaravelフレームワークを使用しているため、構文は次のとおりです。
$user = User::find($id);
return Response::json($user->toArray());
舞台裏でこれを行っているのはどれですか:
$this->data = json_encode($data);
残念ながら、JSON_NUMERIC_CHECK
オプションを設定するフックがありません。
コードをリファクタリングする前に、JSON_NUMERIC_CHECK
すべてのjson_encode
呼び出しを強制する方法はありますか? 同じデータベースを使用してデータを取得しているので、プラットフォーム関連の問題であると思いますか?
編集:
さらに調査した結果、犯人はデータベース ドライバーである可能性があると考えました。Windowsにデータをダンプすると、次のようになります:
array
'id' => int 40
'name' => string 'test' (length=4)
Linuxでは次のとおりです。
array
'id' => string '40' (length=2)
'name' => string 'test' (length=4)