JSON в XML и обратно: практический конвертер для двух миров данных
Большинство разработчиков работают с XML и JSON вне зависимости от желания. Современные веб-API говорят почти исключительно на JSON, но стоит только прикоснуться к банку, страховщику, государственному эндпоинту, корпоративной ERP или старому SOAP-сервису — и XML появляется снова. Конвертер JSON в XML на этой странице преобразует JSON в XML и XML обратно в JSON прямо в браузере, чтобы вы могли переключаться между форматами, не копируя конфиденциальные данные в сторонний удалённый сервис.

Что такое XML и JSON на самом деле
XML (Extensible Markup Language) — формат разметки, построенный вокруг вложенных тегов, атрибутов и пространств имён. Он был разработан для обмена документами и структурированными данными и несёт в себе много механизмов: схемы (XSD), пространства имён, инструкции обработки, комментарии, секции CDATA и формальное объявление в начале. Именно эта насыщенность объясняет, почему XML до сих пор доминирует в устаревших и корпоративных системах. Вы найдёте его в SOAP-сервисах, RSS и Atom-лентах, конфигурационных файлах (Spring, Maven, .NET app config), форматах офисных документов и финансовых стандартах обмена сообщениями — SWIFT и ISO 20022, — где банки и страховщики продолжают обмениваться XML ежедневно.
JSON (JavaScript Object Notation) значительно проще: объекты с парами ключ/значение, массивы, строки, числа, булевы значения и null. Он практически один к одному соответствует структурам данных почти каждого языка программирования — именно поэтому завоевал современные веб-API, REST-эндпоинты, мобильные приложения и конфигурационные файлы наподобие package.json. JSON обычно на 30–50% меньше эквивалентного XML и разбирается заметно быстрее — отчасти потому, что исключает закрывающие теги и механику атрибутов, делающую XML многословным.
Ключевые различия, важные для конвертации
Два формата пересекаются достаточно, чтобы отображаться друг в друга, но не идеально. Несколько структурных отличий порождают почти всё трение:
- Атрибуты против дочерних узлов. XML различает
<user id="1">(атрибут) и<user><id>1</id></user>(дочерний элемент). В JSON такой концепции нет, поэтому конвертеры изобретают её. По соглашению атрибуты складываются в ключ наподобие@attributesили получают префикс@, а текст элемента попадает в ключ вроде#text. - Массивы. В JSON есть нативные массивы. В XML — нет. Список в XML — это просто повторяющийся тег: три элемента
<item>подряд. Конвертеры должны угадывать, когда повторяющиеся элементы следует свернуть в JSON-массив, а когда одиночный элемент должен остаться обычным объектом. - Пространства имён. XML использует пространства имён (префиксы
xmlns:soap) для устранения конфликтов имён между схемами. В JSON ничего эквивалентного нет, поэтому префиксы либо остаются буквальными символами в ключах, либо удаляются. - Многословность и метаданные. XML может прикреплять метаданные к узлу через атрибуты; JSON выражает всё через ключи и значения. Это делает JSON компактнее и удобочитаемее, тогда как XML сохраняет мощь валидации через XSD-схемы.
Подводные камни при конвертации
Классическая ошибка — конвертировать JSON в XML и обратно в JSON, ожидая идентичного результата. Конвертация теряет данные в обоих направлениях, если вы не контролируете правила. Держите в уме следующее:
- Атрибуты искажаются. При конвертации JSON в XML инструменту нужно правило: какие ключи становятся атрибутами, а какие — элементами. При обратной конвертации атрибуты должны куда-то попасть — и это «куда-то» (префикс
@, блок@attributes) различается у разных библиотек. Если нижестоящий парсер ожидает другое соглашение, данные выглядят неверно, хотя ничего не было потеряно. - Одиночный элемент против массива. XML-лента с одним
<item>даёт JSON-объект; та же лента с двумя элементами даёт JSON-массив. Код, предполагающий массив, ломается на случае с одним элементом. Это распространённый источник ошибок при разборе RSS и SOAP. - Пространства имён утекают или исчезают. В зависимости от инструмента
soap:Bodyможет стать ключом с буквальным именемsoap:Bodyили префикс может быть полностью удалён, изменяя смысл документа. - Смешанный контент и типы. XML трактует всё как текст, поэтому значение вроде
trueили42может остаться строкой после конвертации в JSON, тогда как в обратном направлении нет нативного места для комментариев или CDATA.

Почему важно работать только локально
JSON и XML-полезные нагрузки нередко являются наиболее чувствительным, что обрабатывает разработчик: API-ответы с токенами, SOAP-сообщения с номерами счетов, конфигурационные файлы с учётными данными. Конвертер, работающий в браузере, никогда не загружает ничего из этого. Разбор и сериализация происходят на вашей машине, ничего не отправляется на сервер, а инструмент работает офлайн после загрузки страницы. При отладке рабочих данных или работе в условиях требований соответствия — это разница между безопасной быстрой проверкой и случайной утечкой данных.
Если нужно привести результат в порядок, используйте наши другие конвертеры данных или оформите вывод с помощью форматировщика JSON перед передачей следующему инструменту в вашем пайплайне.
Часто задаваемые вопросы
Конвертер загружает мой JSON или XML куда-то?
Нет. Конвертация JSON в XML и XML в JSON происходит полностью в браузере. Ваши данные никогда не покидают устройство, а инструмент работает офлайн после загрузки страницы.
Как обрабатываются атрибуты XML при конвертации в JSON?
Атрибуты XML помещаются в отдельный ключ — обычно с префиксом в виде знака «собачки» или сгруппированные в блок attributes, поскольку в JSON нет нативной концепции атрибутов. Текстовое содержимое элемента хранится отдельно, чтобы оба сохранялись при конвертации.
Почему мой единственный XML-элемент стал объектом, а не массивом?
В XML нет нативных массивов, поэтому список — это просто повторяющийся тег. Когда присутствует только один элемент, конвертер не может отличить его от обычного объекта и создаёт объект. Два и более одноимённых элемента сворачиваются в JSON-массив.
Что происходит с пространствами имён XML, такими как soap или xmlns?
В JSON нет эквивалента пространствам имён XML. В зависимости от конвертации префикс сохраняется как буквальный текст внутри ключа или удаляется. Проверьте вывод, если нижестоящий потребитель рассчитывает на префиксы пространств имён.
Можно ли конвертировать JSON обратно в XML и получить исходный документ?
Не всегда точно. Конвертация теряет данные в обоих направлениях, поскольку такие возможности XML, как комментарии, CDATA и различие между атрибутами и элементами, не имеют чистого аналога в JSON. Обратное преобразование работает лучше всего, когда вы контролируете правила именования с обеих сторон.
Где XML всё ещё используется в сравнении с JSON?
XML живёт в устаревших и корпоративных системах: SOAP-сервисах, RSS и Atom-лентах, конфигурационных файлах и финансовых стандартах обмена сообщениями — SWIFT и ISO 20022. JSON доминирует в современных веб-API, REST-эндпоинтах и мобильных приложениях.
