当(使用MySQL驱动程序)对包含一些数值字段的模型执行雄辩的查询,然后返回结果的json响应时,json似乎将数值作为字符串而不是数字进行传递。
例如。
$properties = Model::find(6);
return Response::json($properties);返回类似以下内容:
{
"name": "A nice item",
"value": "160806.32"
}当它应该返回时:
{
"name": "A nice item",
"value": 160806.32
}在普通的php中,你可以使用JSON_NUMERIC_CHECK来解决这个问题,但是对于Response::json()方法似乎没有这样的选项。如何确保数值字段以数字而不是字符串的形式返回?
发布于 2014-06-02 22:25:37
实际上,您可以忽略该选项。如果我们看一下JsonResponse class的源代码,您可以将json_encode选项作为最后一个参数进行传递。
它看起来就像这样
return Response::json($properties, 200, [], JSON_NUMERIC_CHECK);或者,你可以这样做:
return Response::make(
$properties->toJson(JSON_NUMERIC_CHECK),
200,
['Content-Type' => 'application/json']
);注意:如果$properties不是Elequoent模型,那么它至少必须实现JsonableInterface
和
return Response::make(
json_encode($properties->toArray(), JSON_NUMERIC_CHECK),
200,
['Content-Type' => 'application/json']
);Eloquent中的toJson()方法只是包装json_encode()并将其传递给模型的数组。我推荐使用前两个选项中的一个。
发布于 2016-04-15 22:44:01
使用JsonResponse的setEncodingOptions方法
return response()->json($properties)->setEncodingOptions(JSON_NUMERIC_CHECK);https://stackoverflow.com/questions/23996567
复制相似问题