← Все инструменты

Конвертер JSON в XML

Мгновенно конвертируйте JSON в XML и XML в JSON прямо в браузере. Только локально и приватно, с пояснениями про атрибуты, массивы, пространства имён и нюансы.

JSON в XML и обратно: практический конвертер для двух миров данных

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

Светящиеся вложенные скобки JSON трансформируются в дерево тегов XML в скобках на тёмно-индиговом фоне
Объекты JSON и деревья тегов XML описывают одни данные разными способами.

Что такое 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-эндпоинтах и мобильных приложениях.