如何消除Json respone上的刹车

时间:2019-06-18 14:02:55

标签: json laravel api response laravel-passport

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":[]
}

2 个答案:

答案 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/