im正在使用passeport开发Laravel Rest Api, 在return response()-> json()中,我想修剪括号
我已经尝试过trim($ json,'[]')函数,但这不是我想要的
public function getOffers()
{
$offers = Offer::where('type', 'primary')->where('active', 1)->get();
$paks = Offer::where('type', 'pack')->where('active', 1)->get();
return response()->json([
'offersList' => $offers,
'packsList' => $paks,
], 200);
}
我希望输出为
{
"offersList": {
{
"id": 3,
"name": "Gold",
"description": null
}
},
"packsList":[]
}
但实际结果是
{
"offersList": [
{
"id": 3,
"name": "Gold",
"description": null
}
],
"packsList":[]
}
答案 0 :(得分:3)
$offers
是一个集合,因此是JSON中的数组。
如果$offers
应该是单个项目,请使用first()
而不是get()
,它将在JSON中呈现为单个对象,而不是对象数组。
$offers = Offer::where('type', 'primary')->where('active', 1)->first();
如果$offers
有时应包含多个优惠,则保持原样;没错!
答案 1 :(得分:1)
嵌套在另一个对象中的括号{}
不是有效的JSON。
对象可以在属性值中用作数组元素。
无效的JSON
{
"offersList": {
{
"id": 3,
"name": "Gold",
"description": null
}
}
}
有效选项1
{
"offersList": [
{
"id": 3,
"name": "Gold",
"description": null
}
]
}
有效选项2
{
"offersList": {
"id": 3,
"name": "Gold",
"description": null
}
}
您可以使用在线短毛绒来快速验证JSON结构。 https://jsonformatter.curiousconcept.com/