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

Вставьте JSON слева, получите корректно сформированный XML справа. Ключи с префиксом @_ становятся атрибутами. Без загрузки.

  1. Вставьте JSON в текстовое поле слева.
  2. Нажмите «Преобразовать в XML». Ключи JSON становятся элементами; @_ключи — атрибутами.
  3. Скопируйте или скачайте отформатированный XML.
  4. Оберните данные одним корневым ключом — XML требует один элемент верхнего уровня.
Что это делает?

Преобразует объект JSON в XML по соглашению fast-xml-parser. Свойства объекта становятся дочерними элементами; свойства с префиксом `@_` — атрибутами на родителе; массивы — повторяющимися элементами-братьями с одинаковым именем тега. Числа, булевы и строки выводятся как текстовое содержимое. Вывод отступается для читаемости.

Пример

Вход JSON:

{
  "root": {
    "@_version": 1,
    "name": "Ada",
    "tags": ["math", "logic"]
  }
}

Выход XML:

<root version="1">
  <name>Ada</name>
  <tags>math</tags>
  <tags>logic</tags>
</root>

Типичные ловушки JSON → XML

XML строже к структуре, чем JSON. Шаблоны ниже покрывают большинство удивительных результатов.

  • Нет единого корня. XML требует ровно один корневой элемент. JSON-объекты с несколькими ключами верхнего уровня дают несколько корней — это невалидный XML. Оберните вход в один ключ: `{"root": {"a":1, "b":2}}`.
  • Массив на верхнем уровне. У JSON-массива `[{"a":1},{"a":2}]` нет имени корневого элемента. Оберните: `{"items": [{"a":1},{"a":2}]}`. Каждый элемент массива становится тогда элементом `<items>`.
  • Имена элементов с пробелами или символами. Имена XML-элементов не могут содержать пробелы, начинаться с цифры или содержать `:`, `/`, `<` и т.д. Очистите ключи JSON перед конвертацией — заменяйте пробелы на `_`, перед цифрами добавляйте букву.
  • Атрибуты vs. элементы. Ключ JSON `id` становится дочерним элементом `<id>1</id>`. Чтобы сделать его атрибутом (`<user id="1">`), добавьте префикс `@_`: `{"user":{"@_id":1}}`. Префикс убирается на выводе.
  • null-значения. JSON `null` становится пустым элементом (`<x/>`). Если нужно полностью исключить, удалите null-значения из JSON перед конвертацией.
  • Спецсимволы в тексте. XML автоматически экранирует `<`, `>`, `&`, `"` и `\'`. Ваша JSON-строка `"<b>hi</b>"` становится текстом `&lt;b&gt;hi&lt;/b&gt;`, а не вложенными элементами. Используйте промежуточную JSON-структуру, если нужна реальная вложенность.
Часто задаваемые вопросы

Как получить XML-декларацию `<?xml version="1.0"?>`?

Добавьте её сами перед выводом — конвертер не выводит декларацию. Для UTF-8 XML декларация технически опциональна, но обычно включается: `<?xml version="1.0" encoding="UTF-8"?>` затем ваш сконвертированный XML.

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

Да. `{"tags":["a","b"]}` становится `<tags>a</tags><tags>b</tags>` — два брата с одним тегом, что и есть стандартное XML-представление повторяющегося значения.

Можно ли получить вложенные массивы в стиле JSON в XML?

Не напрямую. У XML нет нативной концепции массива; только повторяющиеся братья. Вложенные массивы JSON становятся более плоской XML-структурой, где группировка определяется контекстом. Круг XML → JSON → XML через этот инструмент сохраняет round-trip-совместимое подмножество.

Как обрабатываются даты?

У JSON нет типа Date — даты обычно уже ISO 8601-строки. Они становятся текстовым содержимым элемента без изменений. Если ваш XML ниже по потоку ожидает определённый формат даты, обеспечьте его в JSON.

Загружается ли мой JSON?

Нет. Всё работает в вашем браузере — ваш ввод парсится и конвертируется JavaScript на этой странице и не отправляется ни на какой сервер.

Сохранит ли круг JSON → XML → JSON мои данные?

Для типичных структурированных данных с соглашением @_-атрибутов — да, семантически. Некоторые угловые случаи (смешанный текст + дочерние элементы, порядок атрибутов vs. элементов) могут нормализоваться. Если важна побайтовая эквивалентность — не делайте круг через XML.