4

最近、この奇妙な問題が発生しています。私は現在、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)
4

1 に答える 1