Відповіді:
Віддайте перевагу XML над JSON, коли будь-яке з них відповідає дійсності:
Віддайте перевагу JSON над XML, коли все це правда:
Я використовую JSON, якщо мені не потрібно використовувати XML. Це простіше зрозуміти, і (оскільки це вимагає менше конфігурації накладних витрат), легше програмувати для читання та запису, якщо бібліотеки доступні у вашому контексті, і вони зараз досить всюдисущі.
Коли Amazon вперше виставив свої каталоги як веб-сервіс, вони запропонували як JSON, так і XML. Щось на зразок 90% реалізаторів обрали JSON.
З огляду на ваш конкретний випадок, коли ви вже робите JavaScript на стороні клієнта, я б пішов із JSON з цих причин:
Оскільки JSON є власником javascript, вам доведеться писати менше коду на стороні клієнта - Просто eval()(або, ще краще JSON.parse()), рядок JSON і отримати об'єкт, яким ви можете користуватися.
У той же час оцінка JSON на стороні клієнта буде ефективнішою і, отже, швидшою.
Серіалізація JSON створює більш короткі рядки, ніж XML. Використання JSON зменшить кількість даних, що проходять через провід, та покращить продуктивність у цьому відношенні.
Ось додаткове читання: http://www.subbu.org/blog/2006/08/json-vs-xml
eval()ін JSON великий ні-ні?
Ще деякі речі, з якими я зіткнувся в XML vs JSON relm:
JSON дуже хороший для
Що означає, що він має тенденцію подобатися масиву або вкладеного масиву. Однак JSON не вистачає обох
Отже, якщо ви об'єднали два або більше служб JSON, можливі конфлікти в просторі імен. При цьому, JSON може бути використаний приблизно для 90% тих же речей, якими можна користуватися XML при обміні даними, зі свого досвіду.
Зазвичай JSON більш компактний і швидший для розбору.
Віддайте перевагу XML, якщо:
Один важливий випадок (майже) XML: спробувати виявити при надсиланні фрагментів HTML вигідніше, ніж надсилання необроблених даних. АХ АХ може творити чудеса в простих програмах, але часто не помічається. Зазвичай цей стиль передбачає, що сервер надсилає фрагменти HTML, які будуть вбудовані на веб-сторінці без обробки.
Зазвичай у випадках AHAH CSS застосовується до максимуму, щоб візуально масажувати фрагменти та застосовувати прості умови, такі як приховування / показ відповідних частин фрагмента, використовуючи налаштування, що стосуються користувачів або програм.
JSON легко та швидше розбирати. XML трохи складніше розбирати та повільніше розбирати та переносити (у більшості випадків).
Оскільки ви використовуєте jQuery, пропоную використовувати JSON: jQuery може відновити дані JSON та автоматично перетворити їх у об'єкт Javascript. Насправді ви можете конвертувати дані JSON в об’єкт Javascript за допомогою eval . Вам слід передати XML вручну (я не знаю, як це працює в Javascript, але важко / дратує більшість мов, з якими я використовував бібліотеки XML).
У мене є повідомлення в блозі на цю тему, де детально описується історія веб-протоколів (наприклад, 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-документі. Тільки ці функції роблять його поганим програмним пристосуванням для більшості мов, що робить його більш втомливим і громіздким для роботи.
З іншого боку, JSON є повною протилежністю XML, оскільки він дуже вільно набраний та має просту підтримку основних типів: Number, Bool, string, Objects and Arrays. Все інше по суті повинно вміщуватися в рядок. Це не чудово, коли ви намагаєтеся спілкуватися через мовні межі, оскільки вам потрібно буде дотримуватися певної нестандартної специфікації, якщо ви хочете підтримувати більш конкретні типи. Зверху його обмежений набір функцій добре підходить для програмного забезпечення для більшості мов - і цілком підходить для JavaScript, оскільки рядок JSON можна зрівняти безпосередньо в об’єкт JavaScript.
Розмір та продуктивність
У мене є кілька орієнтирів бази даних на північному повітрі, які порівнюють розмір та швидкість між реалізаціями Microsofts XML та JSON. В основному XML більше ніж в 2 рази перевищує розмір JSON, але в той же час, схоже, Microsoft докладає великих зусиль для оптимізації свого XML DataContractSerializer, оскільки він на 30% швидший, ніж JSON. Здається, що вам доведеться робити компроміс між розміром і продуктивністю. Не задоволений цим фактом, я вирішив написати свій власний швидкий JsonSerializer, який зараз на 2,6 рази швидший, ніж XML у MS - так найкраще в обох світах :).
Я б вибрав XML через JSON, якщо мені потрібно перевірити шматок вхідних даних, оскільки XML підтримує це через XSD.
Піднімаючись по маршруту JSON, ви стикаєтеся з тими ж проблемами, з якими стикалося XML 10 років тому:
Змішування даних з двох різних джерел в одному пакеті JSON може призвести до того, що мітки елементів стикаються одна з одною. Змішайте пакувальний лист і рахунок-фактуру, і раптом Адреса може означати щось зовсім інше. Тому XML має простори імен .
Перетворення між різними структурами JSON вимагає написання мирського коду. Більш декларативний спосіб відображення даних полегшить роботу. Ось чому XML має XSLT .
Опис структури пакета JSON - його поля, типи даних тощо - необхідний для того, щоб люди могли підключитися до ваших послуг. Для цього важливо мати мову метаданих. Ось чому XML має схеми .
Ведення двох одночасних розмов клієнт-сервер допоможе. Якщо ви задаєте серверу два запитання і отримаєте одну відповідь назад, як ви знаєте, на яке питання він відповідає? Ось чому XML має WS-кореляцію .
З першого рядка за адресою http://json.org/xml.html
Розширювана мова розмітки (XML) - це текстовий формат, похідний від стандартної узагальненої мови розмітки (SGML). Порівняно з SGML, XML є простим. Мова порівняння HyperText (HTML), порівняно, ще простіша. Незважаючи на це, хороший довідник з HTML - товщина дюйма. Це тому, що форматування та структурування документів - справа складна. . . .
Ясно, що JSON швидше, але ще зрозуміліше, що його важко читати. Використовуйте JSON для швидкості, використовуйте XML, якщо буде взаємодія між людьми і ви можете пожертвувати швидкістю.
Я використовую JSON для будь-якого типу конфігурації, обміну даними або обміну повідомленнями. Я використовую XML лише в тому випадку, якщо мені потрібно з інших причин або для семантичного маркування даних, подібних до документів.
І XML, і JSON підтримуються Microsoft. XML-літерали стали новою цікавою функцією VB 9. У майбутній версії ASP.NET 4.0 JSON є обов'язковим для використання сили шаблону на стороні клієнта.
З питання, яке ви задали, здається, що JSON може стати вибором для вас, оскільки його легко обробити на стороні клієнта з або без jQuery.
Використання JSON
Використання XML
Цю статтю на цифровому базарі я вважав дійсно цікавою.
Деякі частини статті цитуються нижче.
Про плюси JSON:
Якщо все, що ви хочете пройти, - це атомні значення чи списки чи хеші атомних значень, JSON має багато переваг XML: він легко доступний через Інтернет, підтримує широкий спектр програм, легко писати програми для обробки JSON, У нього є кілька необов'язкових функцій, він зрозумілий і зрозумілий для людини, його дизайн формальний і стислий, документи JSON легко створювати, і він використовує Unicode. ...
Про плюси XML:
XML надзвичайно добре справляється з повним багатством неструктурованих даних. Мене взагалі не хвилює майбутнє XML, навіть якщо його смерть радісно святкує кадр дизайнерів веб-API.
І я не можу протистояти налаштуванню "Я вам це сказав!" жетон в моєму столі. Я з нетерпінням чекаю, що люди JSON роблять, коли їх просять розробити багатші API. Коли вони хочуть обмінюватися менш добре структурованими даними, чи впорядкують їх у JSON? Я бачу, що періодично згадується мова схеми для JSON, чи дотримуватимуться інші мови? ...
Швидкі правила:
Пояснення:
Єдиною роллю JSON є серіалізація об'єктно-орієнтованих даних, використовуючи типи даних, загальні для більшості мов програмування: списки , хеші та скаляри , і для цього її реально не можна побити чи покращити. На думку "JSON не має номера версії [як] жодних змін до граматики JSON не передбачається". - Дуглас Крокфорд (Не можу перемогти це як знак того, що ви прекрасно виконуєте свою роботу)
Колись XML продавались як формат зміни даних, але врахуйте два найпоширеніших випадки використання: Асинхронний зв’язок клієнт-сервер (AJAX) - JSON в значній мірі замінив XML повністю (X справді повинен бути J) та веб-сервіси : JSON зробила XML зайвою альтернативою.
Інша річ, для якої широко використовували XML - це файли даних, що записуються / читаються (?) Для програм, але і тут ви маєте більш стислий, більш програмний, більш зручний для людини формат у YAML, суперсет JSON.
Таким чином, для представлення даних JSON перемагає XML по всій платі. Що тоді залишилося для XML? Представлення змішаного змісту документів, для чого воно і було призначене .
Більшість сучасних веб-технологій працюють за допомогою JSON, тому, безумовно, вагома причина для використання JSON. Великою перевагою є те, що в XML ви можете представляти декількома різними способами одну і ту ж інформацію, яка в JSON є більш простою.
Також JSON IMHO набагато чіткіше, ніж XML, що робить для мене явну перевагу. А якщо ви працюєте з .NET, Json.NET - явний переможець, який допоможе вам працювати з JSON.