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

Каковы относительные достоинства CSV, JSON и XML для REST API?

В настоящее время мы планируем новый API для приложения и обсуждаем различные форматы данных, которые мы должны использовать для обмена. Проводится довольно интенсивное обсуждение относительных достоинств CSV, JSON и XML.

В принципе, суть аргумента заключается в том, следует ли вообще поддерживать CSV из-за отсутствия рекурсии (, то есть иметь документ, который имеет multiple authors и multiple references, потребует multiple API calls для получения все information).

В опытах, которые могут возникнуть при работе с информацией из Web APIs, и о том, что мы можем сделать, чтобы сделать жизнь проще для разработчиков, работающих с нашим API.


Наше решение:

Мы решили предоставить XML и JSON из-за сложности рекурсии в CSV, требующей нескольких вызовов для одной логической операции. JSON не имеет синтаксического анализатора в Qt и Protocol Buffers, похоже, не имеет реализации non-alpha PHP, поэтому они тоже отсутствуют на данный момент, но, вероятно, будут поддерживаться в конце концов.

4b9b3361

Ответ 1

CSV сразу. JSON - это более компактное обозначение объекта, чем XML, поэтому, если вы ищете большие объемы, это имеет преимущество. XML имеет более широкое проникновение на рынок (мне нравится эта фраза) и поддерживается всеми языками программирования и их основными структурами. JSON добирается туда (если он еще не существует).

Лично мне нравятся скобки. Я бы поставил на то, что больше разработчиков удобнее работать с данными xml, чем с json.

Ответ 2

Преимущества:

  • XML - множество библиотек, с которыми знакомы разработчики, XSLT, может быть легко проверена как клиентом, так и сервером (XSD, DTD), иерархическими данными
  • JSON - легко интерпретируется на стороне клиента, компактная нотация, иерархические данные
  • CSV - открывается в Excel (?)

Недостатки:

  • XML - раздутый, сложнее интерпретироваться в JavaScript, чем JSON
  • JSON - Если используется неправильно, может быть обнаружено отверстие безопасности (не используйте eval). Не все языки имеют библиотеки для интерпретации.
  • CSV - не поддерживает иерархические данные, вы бы только один это делал, это на самом деле намного сложнее, чем большинство разработчиков думают анализировать действительные CSV файлы (значения CSV могут содержать новые строки, если они находятся между кавычками и т.д.).

Учитывая вышеизложенное, я бы даже не стал поддерживать CSV. Клиент может генерировать его из XML или JSON, если это действительно необходимо.

Ответ 3

В CSV так много проблем, как сложная модель данных, которую я бы не использовал. XML очень гибкий и простой в программировании - у клиентов не будет проблем с кодированием генераторов и парсеров XML, вы даже можете предоставить образцы парсеров с помощью SAX.

Вы проверили формат данных в сети Google? Он называется протокольными буферами. Не знаю, полезен ли он для службы REST, поскольку он пропускает этот весь HTTP-уровень тоже.

Ответ 4

XML иногда может быть немного тяжеловесным. JSON довольно хорош, однако, имеет хорошую языковую поддержку, и данные JSON могут быть переведены непосредственно на собственные объекты на многих игровых формах.

Ответ 5

У меня нет опыта работы с JSON, CSV работает до такой степени, что ваши данные очень табличные и равномерно структурированные. XML может стать громоздким очень быстро, особенно если у вас нет инструмента, который автоматически создает привязки к вашим объектам.

Я еще не пробовал это, но Буферы протокола Google выглядят действительно хорошими, простыми формами, создает автоматические привязки к С++, Java и Python и реализует сериализацию и десериализацию созданных объектов.

Ответ 6

Отказывается от того, что уже сказал Аллайн Лалонде, еще одно преимущество CSV заключается в том, что он имеет тенденцию быть более компактным, чем XML или даже JSON. Итак, если ваши данные строго табличные, с полностью плоской гиерархией, CSV может быть правильным выбором. Дополнительными недостатками CSV являются то, что он может использовать разные разделители и десятичные разделители, основываясь на том, какой инструмент (и даже страна!) Сгенерировал его.