gpt4 book ai didi

php - Laravel Response::json() 带数字检查

转载 作者:可可西里 更新时间:2023-11-01 13:03:12 27 4
gpt4 key购买 nike

当对具有一些数字字段的模型(使用 MySQL 驱动程序)执行 Eloquent 查询然后返回结果的 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() 方法似乎没有这样的选项。如何确保数字字段以数字而非字符串的形式返回?

最佳答案

您实际上可以传递该选项。如果我们看一下 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']
);

toJson() Eloquent 中的方法只是包装 json_encode() 并将它传递给模型的数组。我建议使用前两个选项之一。

关于php - Laravel Response::json() 带数字检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23996567/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com