Какой формат лучше для списка в дизайне JSON API, плоский массив или вложенный объект?

Для API списков, такого как Users, я обнаружил, что есть два распространенных формата. Массивы:

// flat array
[
  {
    "login": "octocat",
    "id": 1
    ...
  },
  ...
]

GitHub, Heroku и Twitter используйте этот формат

VS Объекты:

{
  "results": [
    {
      "login": "octocat",
      "id": 1
      ...
    },
    ...
  ]
}

Анализ и Slack и Instagram используйте этот формат.

Какой из них лучше? Как сравнить эти два формата?


person Tony Han    schedule 03.10.2015    source источник
comment
Я бы сказал, что второй метод более расширяемый. Он обратно совместим в том случае, если вы хотите, например, включить некоторые метаданные в объект под другим именем члена. Первый метод гарантированно потребует критического изменения в случае, если вы захотите добавить в схему.   -  person CollinD    schedule 03.10.2015
comment
Имеет смысл. Поэтому я просто не понимаю, почему GitHub, Heroku и Twitter используют первый метод.   -  person Tony Han    schedule 03.10.2015


Ответы (1)


Массивно-ориентированные данные имеют следующие преимущества:

  • Клиентский JavaScript имеет больше методов для массивов, чем для объектов
  • Нет необходимости в корневом узле для имитации древовидной структуры для табличной структуры.

и недостатки:

  • Нет пространства имен, так как индексы числовые
  • JSON.parse не работает в клиентском JavaScript

Данные, ориентированные на ключ/значение, имеют следующие преимущества:

  • JSON.parse работает на клиентском JavaScript
  • Пространство имен упрощает устранение неоднозначности повторяющихся значений.
  • JSON.stringify работает, чтобы сделать простые преобразования проще по сравнению с методами массива

и недостатки:

Ссылки

person Paul Sweatte    schedule 03.06.2017