Подтвердить что ты не робот

Является ли список/массив действительным JSON?

Я хочу написать веб-сервис, который обслуживает списки объектов JSON. Действительно ли JSON возвращает следующее:

[
  {"keyA1":"valA", "keyB1":"valB"}
 ,{"keyA2":"valA", "keyB2":"valB"}
 ,{"keyA3":"valA", "keyB3":"valB"}
]

Или это "правильный" способ сделать это, чтобы поместить его в один возвращаемый объект:

{"elements":[
   {"keyA1":"valA", "keyB1":"valB"}
  ,{"keyA2":"valA", "keyB2":"valB"}
  ,{"keyA3":"valA", "keyB3":"valB"}
]}
4b9b3361

Ответ 1

Обе формы действительны. Однако для API я бы рекомендовал вторую форму. Причина в том, что он дает вам путь для расширения вашего API.

Например, если у вас есть API getUsersInGroup, который возвращает массив пользовательских объектов, а позже вы решите, что хотите включить, скажем, некоторую совокупную статистику о возвращаемых пользователях, нет простого способа сделать это без (или включая множество избыточных данных в каждом пользовательском объекте). Если вы используете объект, вы просто добавляете другое поле в объект, который молча игнорируется клиентами в предыдущей версии API.

Короче говоря, старайтесь избегать примитивов верхнего уровня, где это возможно, в вашем API, и вам будет легче его расширять в будущем.

Ответ 2

Вы можете проверить JSON, используя http://jsonlint.com/

Оба являются действительными результатами JSON, но я бы использовал второй. Это более логично и описательно.

Ответ 3

Оба действительны JSON, но второй способ правильный; передача JSON вокруг как массив может привести к уязвимостям безопасности. См. сообщение о безопасности JSON, чтобы узнать об этом подробнее. В некоторых рамках, таких как фляжка, существуют даже меры, которые мешают вам проходить вокруг JSON в виде массива.