Что лучше использовать JSON или XML?

livedev-noxmlСейчас AJAX используется практически на каждом, “уважающем себя” сайте. Он упрощает и улучшает интерфейс для пользователей и зачастую снимает нагрузку с сервера. AJAX стал незаменимой частью вебпрограммирования и разработки как простых так и мощных вебприложений.

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

Обычно AJAX ипользуется для обмена текстовой информацией. Например, запросов вида “покажи мне все записи пользователя с именем Pepper”. Ответом на такой запрос будет набор слов в определенном формате. Именно о формате мы и поговорим.

 

Последние 3-4 месяца я работал над проектом с группой людей, в котором очень широко использовалать функциональность AJAX и без нее проект просто никогда не был бы воплощен в жизнь. Есть случаи, когда AJAX улучшает интеракцию пользователя с интерфейсом, но есть случаи, как мой, когда все основано именно на AJAX.

Есть 3 формата ответов: простой текст, документ, . Простой текст ничего сложного не представляет и является просто набором символов, которые можно где-то отобразить на странице. Например:

<span style="color: #000066;">alert</span><span style="color: #009900;">(</span>response.<span style="color: #660066;">responseText</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>

Само название переменной responseText указывает на то, что ее содержимое явзяется текстом. Такой формат ответа является приемлимым, если сервер отправляет всего один кусочек информации. Например, время на сервере или количество гостей на сайте. Это будет просто-напросто одно слово или предложение. Но, что если нужно отправить и время и количество гостей сразу, в одном ответе? В таком случае и появляется нужда в разделении разных фрагментов ответа, чтобы избежать перемешивания информации.

Для разделения информации используются два способа: JSON и XML.

XML формат представляет собой документ, имеет структуру, похожует на дерево. Вы начинаете с корня и проверяете все ветви. Именно в ветвях и будет содержаться нужная информация. Пример XML документа:

Если сервер отправляет в ответ XML документ, то нужно уведомить об этом JavaScript код. Делается это ипользуя responseXML вместо responseText. После получения ответа, этот ответ нужно будет парсить, чтобы “выдернуть” нужную информацию. JavaScript не имеет встроенных мезанизмов для работы с XML, поэтому придеться делать все вручную, самому. Много возни, не правда ли?

Есть более простой, но не менее мощный способ пересылки информации, и называется он JSON.
JSON (JavaScript Object Notation) — текстовый формат обмена данными, основанный на JavaScript и обычно используемый именно с этим языком. Как и многие другие текстовые форматы, JSON легко читается людьми (http://ru.wikipedia.org/wiki/JSON).

Именно с этим форматом я работал на протяжении почти четырех месяцев, день и ночь. В нем есть много бонусов, по сравнению с XML, но все зависит от ситуации.

Итак, как же выглядит JSON? Пример 1:

<span style="color: #009900;">{</span><span style="color: #003366; font-weight: bold;">var</span><span style="color: #339933;">:</span><span style="color: #3366cc;">"boom!"</span><span style="color: #339933;">,</span>var2<span style="color: #339933;">:</span><span style="color: #3366cc;">"привет"</span><span style="color: #339933;">,</span>var3<span style="color: #339933;">:</span><span style="color: #009900;">[</span><span style="color: #3366cc;">"я"</span><span style="color: #339933;">,</span><span style="color: #3366cc;">"ты"</span><span style="color: #339933;">,</span><span style="color: #3366cc;">"он"</span><span style="color: #339933;">,</span><span style="color: #3366cc;">"они"</span><span style="color: #009900;">]</span><span style="color: #339933;">,</span>var4<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span>var5<span style="color: #339933;">:</span><span style="color: #cc0000;">175</span><span style="color: #009900;">}</span>

или пример 2:

<span style="color: #009900;">[</span><span style="color: #cc0000;">1</span><span style="color: #339933;">,</span><span style="color: #cc0000;">2</span><span style="color: #339933;">,</span><span style="color: #cc0000;">3</span><span style="color: #339933;">,</span><span style="color: #3366cc;">"aaa"</span><span style="color: #339933;">,</span><span style="color: #3366cc;">"бббб"</span><span style="color: #009900;">]</span>

Сервер может ответить именно такой строкой, которая будет доступна через параметр responseText. Да, это будет простой текст, не XML. Для того, чтобы превратить его в рабочий объект, нужно просто-напросто отдать ответ сервера на растерзание фунции eval ():

<span style="color: #003366; font-weight: bold;">var</span> data <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">eval</span><span style="color: #009900;">(</span><span style="color: #3366cc;">'('</span><span style="color: #339933;">+</span>response.<span style="color: #660066;">responseText</span><span style="color: #339933;">+</span><span style="color: #3366cc;">')'</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>

Не забывайте использовать дополнительных скобки, иначе вы не получите желаемого результата. Таким образом, мы получаем объект, и его элементы будут достпны либо по названию (пример 1) либо по индексу (пример 2). Самым распространенным является пример 1, так в нем можно ипользовать массивы, строки, числа, булеаны, и все остальное, что доступно в JavaScript.

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

Когда использовать XML?

  • Вы храните данные в формате XML (в текстовых файлах)
  • Объем отсылаемой сервером информации довольно велик

Когда использовать JSON?

  • Объем отсылаемой сервером информации не очень велик
  • Вам важна скорость обработки ответа в JavaScript коде
  • Вы не хотите морочить себе голову парсингом XML документов
  • AJAX запросы делаются часто

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

AJAX + JSON + eval = быстрота и удобство.

Запись навигация

Top