Форматы данных
XML и JSON: различия, примеры и когда использовать каждый формат
XML и JSON — текстовые форматы структурированных данных, но они моделируют данные по-разному. XML строится вокруг элементов, атрибутов и порядка документа, а JSON — вокруг объектов, массивов и типизированных значений.
Опубликовано
XML и JSON используют разные модели данных
XML представляет документ как вложенные элементы с необязательными атрибутами, текстовыми узлами, комментариями, инструкциями обработки и пространствами имён. JSON представляет значения: объекты, массивы, строки, числа, логические значения и null.
Поскольку модели различаются, конвертация является выбором правил отображения, а не посимвольным переписыванием.
Одни данные в XML и JSON
Это правило сохраняет XML-атрибут в отдельном объекте. Текст true остаётся строкой, если конвертеру явно не разрешено определять скалярные типы.
XML:
<user id="42">
<name>Ada</name>
<active>true</active>
</user>
JSON:
{
"user": {
"@attributes": { "id": "42" },
"name": "Ada",
"active": "true"
}
}Типы, порядок и повторяющиеся значения
| Вопрос | XML | JSON |
|---|---|---|
| Скалярные типы | Текст, пока схема или приложение не добавляет правила типов | Строка, число, логическое значение и null встроены |
| Порядок | Порядок дочерних элементов значим для модели документа | Порядок массива значим; порядок полей объекта не должен нести смысл |
| Повторяющиеся значения | Повторяющиеся соседние элементы | Явные массивы |
| Метаданные | Атрибуты и пространства имён | Обычные поля объекта по принятому соглашению |
Читаемость, размер и инструменты
- JSON обычно компактнее для данных приложений, имеющих форму объектов.
- XML выразительнее для размеченных документов, смешанного текста и метаданных в атрибутах.
- Оба формата поддерживают валидацию, но их экосистемы схем и модели данных различаются.
- Ни один формат не является безопасным автоматически: парсерам всё равно нужны ограничения размера и безопасная конфигурация.
Когда использовать XML или JSON
Выбирайте JSON для веб-API, конфигурации и состояния приложений, когда потребитель естественным образом ожидает объекты и массивы. Выбирайте XML для документоориентированных процессов, стандартов вроде SOAP, словарей с пространствами имён или контрактов, различающих атрибуты и элементы.
При преобразовании установленного XML-контракта сначала решите, как сохранять атрибуты, повторяющиеся элементы, пространства имён и текст, и только затем рассматривайте JSON-результат как эквивалентное представление.
Проверьте пример
Преобразуйте один XML-объект в JSON
Пример наглядно показывает отображение атрибута и текстовых значений.
<user id="42"><name>Ada</name><active>true</active></user>Ожидаемый результат: Умное отображение группирует id в @attributes и сохраняет текстовые значения как строки.
Преобразуйте реальный документ
Посмотрите, как XML отображается в JSON
Вставьте свой XML, изучите его структуру и выберите правила отображения атрибутов, повторяющихся элементов и скалярных значений.