В настоящее время мы планируем новый API для приложения и обсуждаем различные форматы данных, которые мы должны использовать для обмена. Об относительных достоинствах CSV, JSON и XML идет довольно интенсивная дискуссия.
По сути, суть аргумента заключается в том, должны ли мы вообще поддерживать CSV из-за отсутствия рекурсии (то есть наличие документа с multiple authors и multiple references потребует от multiple API calls получения всех information).
Из опыта, который вы могли получить при работе с информацией из Web APIs, и из того, что мы можем сделать, чтобы облегчить жизнь разработчикам, работающим с нашим API.
Наше решение:
We've decided to provide
XMLandJSONdue to the difficulty in recursion inCSVneeding multiple calls for a single logical operation.JSONdoesn't have a parser inQtandProtocol Buffersdoesn't seem to have anon-alpha PHPimplementation so they are out for the moment too but will probably be supported eventually.
CSV проще и эффективнее для строго табличных данных. Попытка втиснуть что-то еще (как в этом случае) в CSV - катастрофа.





CSV прямо сейчас. JSON - более компактная объектная нотация, чем XML, поэтому, если вы ищете большие объемы, у нее есть преимущество. XML имеет более широкое проникновение на рынок (мне нравится эта фраза) и поддерживается всеми языками программирования и их основными фреймворками. JSON приближается (если еще не был).
Лично мне кронштейны нравятся. Я готов поспорить, что большему количеству разработчиков удобнее работать с xml-данными, чем с json.
У CSV так много проблем, как у сложной модели данных, поэтому я бы не стал ее использовать. XML очень гибкий и простой в программировании - у клиентов не возникнет проблем с кодированием генераторов и парсеров XML, вы даже можете предоставить образцы парсеров с помощью SAX.
Вы проверили формат сетевых данных Google? Это называется протоколом буферов. Однако не знаю, полезно ли это для службы REST, поскольку он также пропускает весь уровень HTTP.
XML иногда может быть немного тяжеловесным. Тем не менее, JSON довольно хорош, имеет хорошую языковую поддержку, а данные JSON можно транслировать непосредственно в собственные объекты во многих игровых формах.
Преимущества:
Недостатки:
Учитывая вышесказанное, я бы даже не стал поддерживать CSV. Клиент может сгенерировать его из XML или JSON, если это действительно необходимо.
Если у вас нет парсера JSON на выбранном вами языке, тогда CSV намного проще анализировать, чем JSON.
Есть парсеры JSON, доступные для очень широкого диапазона языков. См. Нижнюю часть json.org.
У меня нет опыта работы с JSON, CSV работает до такой степени, что ваши данные очень табличны и равномерно структурированы. XML может очень быстро стать громоздким, особенно если у вас нет инструмента, который автоматически создает привязки к вашим объектам.
Я тоже не пробовал, но Буферы протокола Google выглядит действительно хорошо, простой формат, создает автоматические привязки к C++, Java и Python и реализует сериализацию и десериализацию созданных объектов.
Помимо что уже сказал Аллен Лалонд, еще одним преимуществом CSV является то, что он имеет тенденцию быть более компактным, чем XML или даже JSON. Итак, если ваши данные представляют собой табличные данные строго с полностью плоской иерархией, CSV может быть правильным выбором. Дополнительным недостатком CSV является то, что он может использовать разные разделители и десятичные разделители, в зависимости от того, какой инструмент (и даже страна!) Его сгенерировал.
Красота CSV в его простоте.