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

Взгляните на LINQ to SQL ...

Пробовал пару месяцев назад и никогда не оглядывался ....

146
задан Dustin 28 November 2008 в 05:23
поделиться

13 ответов

Одобрите XML по JSON, когда любой из них будет верен:

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

JSON по XML, когда все они верны:

  • сообщения не должны быть проверены, или проверка их десериализации проста
  • , Вы не преобразовываете сообщения или преобразовываете их десериализацию, прост
  • , Ваши сообщения являются главным образом данными, не отмеченным текстом
  • , обменивающиеся сообщениями конечные точки имеют хорошие инструменты JSON
149
ответ дан Robert Rossney 28 November 2008 в 05:23
поделиться

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

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

8
ответ дан Tejasvi 28 November 2008 в 05:23
поделиться
  • 1
    @Joshua: That' s совершенно допустимый. Я соглашаюсь, что Ваш метод вообще предпочтителен, однако, я don' t всегда обеспечивают методы set для всех переменных экземпляра (например, когда они shouldn' t изменение после объектной инициализации). – Zach Kemp 5 January 2014 в 08:46

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

6
ответ дан lowglider 28 November 2008 в 05:23
поделиться
  • 1
    Не определяя нежелательные атрибуты - that' s положительная сторона. – B Seven 6 October 2012 в 20:11

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

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

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

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

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

11
ответ дан Eugene Lazutkin 28 November 2008 в 05:23
поделиться
  • 1
    Мне нравится это также, но это походит на it' s только полезный в классах, где все переменные экземпляра имеют методы set. – Zach Kemp 6 October 2012 в 19:29

Рассмотрение Вашего конкретного случая, где Вы уже делаете JavaScript на стороне клиента, я пошел бы с JSON по этим причинам:

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

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

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

Вот некоторые дополнительные материалы для чтения: http://www.subbu.org/blog/2006/08/json-vs-xml

15
ответ дан urig 28 November 2008 в 05:23
поделиться
  • 1
    Позиционные параметры могут быть неприятностью по многим причинам - трудный осуществить рефакторинг - и слишком легкий для несоответствия передаваемым переменным. – Ross Attrill 7 January 2014 в 01:13

JSON является собственным кодированием для JavaScript. Это должно быть намного быстрее и легче работать с.

2
ответ дан Dustin 28 November 2008 в 05:23
поделиться

Я использую JSON, если я не обязан использовать XML. Более просто понять, и (потому что требуется меньше конфигурации наверху), для чтения и записи легче к программе, если библиотеки доступны в Вашем контексте, и они довольно повсеместны теперь.

, Когда Amazon сначала представил их каталоги как веб-сервис, они предложили и JSON и XML. Что-то как 90% лиц, осуществляющих внедрение выбрало JSON.

81
ответ дан dkretz 28 November 2008 в 05:23
поделиться

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

1
ответ дан Lawrence Dol 28 November 2008 в 05:23
поделиться

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

, Так как Вы используете jQuery, я предлагаю использовать JSON: jQuery может получить данные JSON и преобразовать, это в JavaScript возражает автоматически. На самом деле Вы можете преобразовывать данные JSON в объект JavaScript использование оценки . XML должен был бы быть транссведущим вручную Вами (я не знаю, как это работает в JavaScript, но это - трудное/больше раздражение на большинстве языков, я пользовался библиотеками XML с).

8
ответ дан strager 28 November 2008 в 05:23
поделиться
  • 1
    lol, didn' t даже понимают I' d ответил в этом потоке. Так или иначе, я почти всегда доступ через методы set/методов get. Если Вы don' t хотят, чтобы они изменились, затем объявили их как частных ( пример ), Но действительно, код инициализатора как это должен только использоваться на структурах данных, таким образом, эта проблема shouldn' t подходят на практике. – Joshua Cheek 5 January 2014 в 14:29

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

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

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

, Что означает, что это имеет тенденцию любить массив или вложенный массив. Однако JSON отсутствует оба

  • атрибуты
  • пространство имен

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

13
ответ дан null 28 November 2008 в 05:23
поделиться

И XML и JSON поддерживаются Microsoft. Литералы XML были новой замечательной функцией в VB 9. В следующей версии ASP.NET 4.0 JSON необходимость для усиления питания клиентской шаблонной обработки.

От вопроса Вы попросили, чтобы казалось, что JSON мог бы быть выбором для Вас, поскольку легко обработать на стороне клиента с или без jQuery.

1
ответ дан 23 November 2019 в 22:42
поделиться

из JSON - последние ноги

Когда вы идете по маршруту JSON, вы сталкиваются с теми же проблемами, что и XML столкнулся 10 лет назад:

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

Преобразование между разными JSON структуры потребуют написания мирской код. Более декларативный способ отображение данных упростило бы работу. Вот почему XML имеет XSLT .

Описание пакета JSON структура - ее поля, типы данных, и т. д. - необходимо для того, чтобы люди подключиться к вашим услугам. Его необходимо иметь язык метаданных для этого. Вот почему в XML есть схемы .

Проведение двух одновременных клиент-серверные разговоры занимают забота. Если вы спросите у сервера два вопросы и получите один ответ, как ты знаешь, на какой вопрос он отвечает? Вот почему XML имеет WS-корреляцию .

3
ответ дан 23 November 2019 в 22:42
поделиться

У меня есть сообщение в блоге на эту тему. история веб-протоколов (например, 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 может быть оценена непосредственно в объекте JavaScript.

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

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

7
ответ дан 23 November 2019 в 22:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: