Когда предпочесть JSON XML - PullRequest
       34

Когда предпочесть JSON XML

145 голосов
/ 28 ноября 2008

Мое требование - просто отобразить набор значений, извлеченных из базы данных, на развороте. Я использую JQuery.

Ответы [ 18 ]

148 голосов
/ 01 декабря 2008

Поддерживайте XML над JSON, когда любое из этих истинных значений:

  • Вам нужна проверка сообщения
  • Вы используете XSLT
  • Ваши сообщения содержат много размеченного текста
  • Вам необходимо взаимодействовать со средами, которые не поддерживают JSON

Поддерживайте JSON над XML, когда все это верно:

  • Сообщения не нужно проверять, или проверка их десериализации проста
  • Вы не преобразуете сообщения или не преобразуете их десериализацию просто
  • Ваши сообщения в основном данные, а не размеченный текст
  • Конечные точки обмена сообщениями имеют хорошие инструменты JSON
80 голосов
/ 28 ноября 2008

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

Когда Amazon впервые представила свои каталоги как веб-сервис, они предложили как JSON, так и XML. Примерно 90% разработчиков выбрали JSON.

16 голосов
/ 28 ноября 2008

Учитывая ваш конкретный случай, когда вы уже выполняете JavaScript на стороне клиента, я бы пошел с JSON по следующим причинам:

  • Так как JSON является родным для JavaScript вам придется писать меньше кода на на стороне клиента - просто eval() (или, еще лучше, JSON.parse()) JSON строка и получить объект, который вы можете использовать.

  • Одновременно выполняется оценка JSON на стороне клиента будет больше эффективный и, следовательно, быстрее.

  • Сериализация JSON приводит к сокращению строки, чем XML. Использование JSON уменьшить количество работающих данных через провод и улучшить производительность в этом отношении.

Вот дальнейшее чтение: http://www.subbu.org/blog/2006/08/json-vs-xml

13 голосов
/ 11 января 2009

Некоторые другие вещи, с которыми я столкнулся в XML против JSON relm:

JSON очень хорош для

  • пары имя / значение
  • вложение этих пар

Это означает, что он склонен к массиву или вложенному массиву. Однако JSON отсутствует как

  • атрибуты
  • * 1016 Пространство имен *

Так что, если вы объедините две или более службы JSON, могут возникнуть потенциальные конфликты пространства имен. При этом JSON может использоваться примерно для 90% тех же самых вещей, для которых XML может использоваться при обмене данными в моем опыте.

11 голосов
/ 28 ноября 2008

Обычно JSON более компактен и быстрее разбирается.

Предпочитайте XML, если:

  • Вам необходимо обработать данные на клиенте, и вы можете использовать для этого XSL. Скорее всего, цепочка XML + XSL будет работать быстрее, чем JSON + JavaScript, особенно для больших порций данных.
    • Один хороший пример - преобразовать данные в фрагмент HTML.
  • Различные унаследованные случаи:
    • Существует служба XML, и по некоторым причинам ее переписать с помощью JSON не составит труда.
    • Вы должны отправить эти данные обратно в виде XML после некоторой легкой обработки с использованием ввода пользователя.

Один важный случай (почти) XML: попытаться обнаружить, когда отправка фрагментов HTML более выгодна, чем отправка необработанных данных. AHAH может творить чудеса в простых приложениях, но часто упускается из виду. Обычно этот стиль предполагает, что сервер отправляет фрагменты HTML, которые будут встроены в веб-страницу без обработки.

Обычно в случаях AHAH CSS максимально используется для визуального массажа фрагментов и реализации простых условий, таких как скрытие / отображение соответствующих частей фрагмента с использованием пользовательских или пользовательских настроек.

8 голосов
/ 28 ноября 2008

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

Поскольку вы используете jQuery, я предлагаю использовать JSON: jQuery может извлекать данные JSON и автоматически преобразовывать их в объект Javascript. Фактически, вы можете преобразовать данные JSON в объект Javascript, используя eval . Вам придется вручную пересекать XML (я не знаю, как это работает в Javascript, но это сложно / более раздражает в большинстве языков, с которыми я использовал библиотеки XML).

8 голосов
/ 24 января 2009

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

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

7 голосов
/ 18 августа 2010

У меня есть запись в блоге на эту тему с подробным описанием истории веб-протоколов (т. Е. SOAP, XML, JSON, REST, POX и т. Д.) С кратким описанием, а также некоторыми преимуществами и недостатками каждого из них: http://www.servicestack.net/mythz_blog/?p=154

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

По сути, XML является более строгим, более жестким форматом сериализации, который может быть дополнительно проверен с помощью сопровождающей схемы (которая является либо XSD, либо DTD). XSD довольно сложны и позволяют вам описывать множество различных типов, например Даты, время, перечисления, определяемые пользователем типы и даже наследование типов и т. Д. SOAP эффективно основывается на наборе функций XML, предоставляя стандартизированный способ описания ваших веб-служб (например, типов и операций) с помощью WSDL. Многословность и сложность спецификации WSDL означает, что ее разработка может быть более утомительной, но в то же время вам доступно гораздо больше инструментов, а большинство современных языков предоставляют автоматизированные инструменты для генерации прокси-серверов ваших клиентов, принимая на себя часть нагрузки. выкл при попытке взаимодействия с внешними сервисами. (Хотя в то же время я нахожу сгенерированные прокси-серверы обременительными при работе с часто меняющимися веб-сервисами).

Я бы по-прежнему рекомендовал использовать XML для своих веб-служб, если у вас есть четко определенная «корпоративная служба», которая не подвержена частым изменениям, или если к вашей веб-службе требуется доступ с разных языков.

При всех своих преимуществах XML также имеет свои недостатки. Он использует пространства имен для предоставления типизируемого расширяемого формата и позволяет указывать атрибуты и элементы в одном и том же документе. Наличие разных пространств имен в одном документе означает, что при использовании анализатора Xml для извлечения данных большую часть времени вам потребуется предоставить пространство имен для каждого элемента, который вы хотите получить / просмотреть. Он также экстраполирует полезную нагрузку, делая ее более многословной, чем должна быть. Возможность вывода атрибутов, а также элементов означает, что ваши классы не отображаются должным образом в XML-документ. Одни только эти функции делают его плохо подходящим для большинства языков, что делает его более утомительным и громоздким в работе. Microsoft признала и несколько упростила это в своем сериализаторе DataContract, покончив с атрибутами XML и просто добавив свойства вашей карты классов только к элементам Xml.

JSON, с другой стороны, во многих отношениях является полной противоположностью XML, поскольку он очень свободно набран и имеет простую поддержку только основных типов: Number, Bool, string, Objects и Arrays. Все остальное по сути должно вписываться в строку. Это не очень хорошо, когда вы пытаетесь общаться через языковые границы, так как вам нужно придерживаться некоторой внеполосной нестандартной спецификации, если вы хотите поддерживать более конкретные типы. С другой стороны, его ограниченный набор функций хорошо подходит для большинства языков программирования и идеально подходит для JavaScript, поскольку строка JSON может быть eval'ed непосредственно в объекте JavaScript.

Размер и производительность

У меня есть доступных тестов базы данных для северного ветра , сравнивающих размер и скорость между реализациями Microsoft и XML JSON. По сути, XML более чем в 2 раза больше JSON, но в то же время выглядит так, будто Microsoft приложила много усилий для оптимизации своего XML DataContractSerializer, так как это более чем на 30% быстрее, чем у JSON. Кажется, что вы должны сделать компромисс между размером и производительностью. Не довольный этим фактом, я решил написать свой собственный быстрый JsonSerializer , который теперь в 2,6 раза быстрее, чем MS XML - так что лучший из обоих миров:).

6 голосов
/ 28 ноября 2008

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

3 голосов
/ 18 марта 2014

с первой строки на http://json.org/xml.html

Расширяемый язык разметки (XML) - это текстовый формат, полученный из стандартного обобщенного языка разметки (SGML). По сравнению с SGML XML прост. Язык разметки гипертекста (HTML), для сравнения, еще проще. Тем не менее, хороший справочник по HTML имеет толщину всего в один дюйм. Это потому, что форматирование и структурирование документов - сложное дело. , , .

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

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