XML и JSON - преимущества и недостатки? - PullRequest
25 голосов
/ 11 апреля 2011

Недавно я слышал о JavaScript Object Notation (JSON), и после его поиска кажется, что он становится довольно популярным в качестве альтернативы расширяемому языку разметки (XML).* эта страница для получения дополнительной информации, но она выглядела скорее как страница с ошибками XML, а не страница сравнения.Поэтому я подумал, что мне следует спросить здесь:

Каковы преимущества JSON по сравнению с XML и почему (если вообще) мы должны выбирать одно из другого?

Ответы [ 8 ]

39 голосов
/ 11 апреля 2011
  • JSON более компактен и может быть легко загружен в JavaScript.
  • XML более строгий и поддерживает схемы и пространства имен.

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

  • Поддержка схемы ,

т.е. возможность для стороны A указать формат документа и возможность для стороны B проверить, что они предоставляют что-то, соответствующее этому формату.

Это очень важно при передаче данных между отдельными системами, где отклонение от ожидаемого формата может означать, что данные не могут быть обработаны (или, что еще хуже, обрабатываются неправильно).

  • Поддержка пространства имен ,

т.е. возможность смешивать данные, предназначенные для чтения несколькими источниками (или записанными несколькими источниками), в одном документе.

Примером этого в действии является протокол SOAP - пространства имен позволяют разделять данные SOAP «Конверт» или «Обертка», которые передаются вместе с сериализованными данными приложения. Это позволяет веб-платформам обрабатывать и обрабатывать конверт SOAP, а затем передавать данные тела / полезной нагрузки в приложение.


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

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

21 голосов
/ 11 апреля 2011

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

  • Меньший размер сообщения
  • Больше структурной информации в документе
    • Может легко различать число 1 и строку "1", так как числа, строки (и логические значения) представлены в JSON по-разному.
    • Может легко различать отдельные элементы и коллекции одного размера (используя массивы JSON).
  • Проще представить нулевое значение
  • Легко потребляется JavaScript

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

  • Пространства имен допускают совместное использование стандартных структур
  • Лучшее представление для наследования
  • Стандартные способы выражения структуры документа: XML-схема, DTD и т. Д.
  • Стандарты синтаксического анализа: DOM, SAX, StAX
  • Стандарты для запросов: XQuery и XPath
  • Стандарты для преобразования документа: XSLT

Draw

  • человек читаемый
  • Легко разобрать
6 голосов
/ 11 апреля 2011

XML

  • Может иметь схему, в которой указан ее формат.
    • Это представляет интерес для людей контроля качества.Вы можете доказать, что его формат соответствует ожидаемому, и, следовательно, вам может не потребоваться быть столь же пылким, как если бы вы могли проверять, существует ли поле внутри него каждый раз, когда вы хотите сослаться на него.
    • (Хотя это предполагает, что вы стараетесь изо всех сил проверять XML на соответствие его схеме.)
  • Раздутый;каждое имя поля должно быть записано дважды для каждого поля.Ew!

JSON

  • Гораздо менее раздутый, более удобный для анализа и, возможно, более читабельный (если вы правильно разметите его).
  • Не такой мощный: недостаточно выразительный, чтобы отделить атрибуты от значений.
5 голосов
/ 11 апреля 2011

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

  1. Практически повсеместная поддержка в широком спектре языков и сред.Скорее всего, уже есть инструмент для извлечения информации из XML-ответа.

  2. Он может придерживаться конкретной схемы, если вы того пожелаете.После проверки вы можете сказать, что это правильно, и начать синтаксический анализ.

  3. Пространства имен позволяют разделить XML.

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

  1. Легкий по сравнению с XML.Меньше символов = меньшее время прохождения internet tubes.

  2. Проще справиться с Javascript, если вам нужно что-то для веб-приложения.

3 голосов
/ 11 апреля 2011

JSON - меньше и может быть изначально загружено как объект JavaScript (скорость является значением)

XML - все еще стандарт, но старше (медленнее, больше, но не только JS)

2 голосов
/ 11 апреля 2011

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

Если вам нужно только отправлять простые простые данные, тогда JSON является хорошей альтернативой, поскольку именно этопредназначен для.

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

1 голос
/ 29 января 2019

Меньше многословия - XML ​​использует больше слов, чем необходимо

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

Структура модели данных JSON соответствует данным: структура данных JSON - это карта, а XML - это дерево. Хотя карта (только пары ключ / значение) может быть ограничивающей, это то, что мы хотим, потому что ее легче интерпретировать и она предсказуема.

В коде: элементы представлены в коде одинаково. Во многих языках, особенно динамических, вы можете просто «хлебнуть в JSON», и у вас сразу появится объект вашего домена. Легко перейти от объектов в JSON к объектам в коде, потому что они выровнены. При переходе от объектов в XML к объектам в коде они не выравниваются, и для интерпретации остается много места.

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

1 голос
/ 11 апреля 2011

Они одинаково выразительные форматы.JSON менее многословен.JSON может быть легко проанализирован в JavaScript (и других языках), а XML также легко анализируется многими вещами.

Я думаю, что наиболее важным фактором является то, что будет потреблять данные - если у вас уже есть кучаXML-интерпретирующий код, придерживайтесь этого.Если все ваши клиенты веб-разработчики, используйте JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...