CodeKitHub
Инструменты JSON

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

Последнее обновление:

Этот инструмент конвертирует JSON в XML и XML в JSON в обоих направлениях, полностью в вашем браузере. Выберите направление, вставьте данные — и получите корректно вложенный результат, который можно скопировать или скачать: вложенные объекты становятся вложенными элементами, массивы — повторяющимися соседними элементами, а атрибуты XML отображаются в ключи `@_имя` в JSON, чтобы преобразование в обе стороны проходило без потерь.

Что это за инструмент?

XML и JSON — оба древовидных формата данных, но применяются в разных контекстах: устаревшие корпоративные API, SOAP-сервисы, RSS/Atom-ленты и многие форматы конфигурации до сих пор используют XML, тогда как современные REST API и код на JavaScript почти повсеместно используют JSON. Этот инструмент переводит данные между двумя форматами, избавляя вас от необходимости вручную писать один из них при интеграции старых и новых систем.

Преобразование построено непосредственно на встроенном в браузер API DOMParser для чтения XML и следует структуре, определённой спецификацией W3C XML 1.0 при генерации — поэтому создаваемый XML является корректно сформированным, а принимаемый XML разбирается точно так же, как это сделал бы браузер или любая XML-библиотека, соответствующая стандарту.

Поскольку в XML есть понятия, которых нет в JSON (атрибуты, смешанное содержимое из текста и элементов, обязательный единственный корневой элемент), а в JSON есть понятия, которых нет в XML (нативные массивы, булевы значения, числа), инструмент использует документированное и широко применяемое соглашение: атрибут XML `name="value"` превращается в ключ JSON `"@_name": "value"`, текстовое содержимое элемента становится либо прямым строковым значением элемента (если у него нет дочерних элементов или атрибутов), либо ключом `"#text"` рядом с атрибутами, а повторяющиеся соседние элементы с одинаковым тегом превращаются в массив JSON.

Зачем его использовать?

  • Двунаправленность — конвертируйте JSON в XML или XML в JSON на одном и том же экране.
  • Корректная обработка вложенности — вложенные объекты JSON становятся вложенными элементами XML на любой глубине, и наоборот.
  • Массивы преобразуются в повторяющиеся элементы — массив JSON под одним ключом превращается в такое же количество соседних XML-элементов с одинаковым тегом, а повторяющиеся XML-теги возвращаются обратно как массив JSON.
  • Атрибуты XML сохраняются — благодаря соглашению `@_имяАтрибута` данные атрибутов не теряются незаметно.
  • Копируйте в буфер обмена или скачивайте в виде файла .json или .xml.
  • Полностью работает на стороне клиента — ничто из вставленного вами никуда не загружается.

Как использовать

  1. Выберите направление: «XML → JSON» или «JSON → XML».
  2. Вставьте данные в поле ввода.
  3. Нажмите «Convert».
  4. Проверьте результат, затем скопируйте его или нажмите «Download», чтобы сохранить файл.

Пример

Ввод

{"user":{"name":"Alice","age":30}}

Результат

<?xml version="1.0" encoding="UTF-8"?>
<user>
  <name>Alice</name>
  <age>30</age>
</user>

Единственный ключ верхнего уровня JSON («user») становится корневым элементом XML; если в JSON несколько ключей верхнего уровня, инструмент оборачивает всё в элемент <root>, поскольку XML требует ровно один корневой элемент.

Практические советы

  • Миграция устаревшей конфигурации XML (например, файла настроек старого приложения) в современную систему на основе JSON: вставьте XML, конвертируйте и при необходимости скорректируйте имена полей.
  • Тестирование SOAP- или XML-RPC-эндпоинта из JavaScript: преобразуйте здесь свой JSON-запрос в XML перед отправкой или конвертируйте XML-ответ обратно в JSON, чтобы легко его изучить.
  • Если в вашем JSON данные, которые в XML представлялись бы повторяющимися элементами, хранятся в виде массива, сначала вложите этот массив под один ключ (например, {"items":{"item":[1,2,3]}}), а не оставляйте его голым массивом верхнего уровня, поскольку XML не может иметь несколько корневых элементов.

Почему важно соглашение об атрибутах @_

Самая сложная часть преобразования JSON/XML заключается в том, что элементы XML могут одновременно нести два типа данных — атрибуты и дочернее содержимое, — тогда как обычный объект JSON состоит только из ключей и значений. Без соглашения, разделяющего их, простой конвертер либо полностью потерял бы атрибуты, либо смешал бы их с дочерними элементами так, что надёжно преобразовать обратно уже не получится. Соглашение о префиксе `@_name` (также используемое широко распространёнными библиотеками в экосистеме JavaScript) решает эту проблему, придавая атрибутам отдельную, однозначную форму ключа, благодаря чему `<product id="42">Widget</product>` корректно преобразуется в обе стороны как `{"product":{"@_id":"42","#text":"Widget"}}`, не теряя id и не заставляя гадать, какое значение чему соответствует.

Часто задаваемые вопросы

Что происходит с JSON, у которого несколько ключей верхнего уровня?

XML требует единственный корневой элемент, поэтому если ваш объект JSON содержит несколько ключей верхнего уровня (например, {"a":1,"b":2}), результат оборачивается в элемент <root>: <root><a>1</a><b>2</b></root>. Если в JSON ровно один ключ верхнего уровня, он напрямую становится именем корневого элемента.

Как атрибуты XML представлены в JSON?

Атрибут вроде <user id="7"> превращается в ключ "@_id": "7" в итоговом объекте JSON. Это распространённое, документированное соглашение (используемое, например, библиотекой fast-xml-parser), которое позволяет отличать атрибуты от дочерних элементов.

Становятся ли повторяющиеся элементы XML массивом JSON?

Да. Если у элемента несколько дочерних элементов с одинаковым именем тега, например <items><item>1</item><item>2</item></items>, преобразование в JSON даёт {"items":{"item":["1","2"]}}. Обратное преобразование этого JSON в XML воспроизводит повторяющиеся элементы <item>.

Сохраняются ли числа и булевы значения при конвертации XML в JSON?

В XML нет нативного понятия чисел или булевых значений — всё является текстом, — поэтому текстовое содержимое передаётся как строка JSON (например, "30", а не 30). Если вам нужны числовые типы, эти поля придётся преобразовать вручную после конвертации.

Загружаются ли мои данные куда-либо?

Нет. Разбор и преобразование полностью происходят в JavaScript в вашем браузере с использованием встроенного API DOMParser — ничего не отправляется на сервер, поэтому инструмент безопасно использовать с приватными конфигурационными файлами или внутренними данными API.

Похожие инструменты