我最近出现了这个奇怪的问题。我目前正在 Windows 环境中进行开发,同时在 Linux 服务器上进行部署,我知道这并不理想,但现阶段我对此无能为力。
我所做的只是从数据库中获取数据,然后返回结果数组的 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)