Как убрать браслеты на Json респоне - PullRequest
0 голосов
/ 18 июня 2019

я работаю над Laravel Rest Api с паспортом, в ответном ответе () -> 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 ]

3 голосов
/ 18 июня 2019

$offers - это коллекция, и, следовательно, массив в JSON.

Если $offers должен быть одним элементом, используйте first() вместо get(), и он будет отображаться как отдельный объект в вашем JSON вместо массива объектов.

$offers = Offer::where('type', 'primary')->where('active', 1)->first();

Если $offers должен иногда содержать несколько предложений, оставьте это как есть; это правильно!

1 голос
/ 18 июня 2019

Брекеты {}, вложенные в другой объект, недопустимы в формате 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/

...