Конвертер JSON в XML
Вставьте JSON слева, получите корректно сформированный XML справа. Ключи с префиксом @_ становятся атрибутами. Без загрузки.
- Вставьте JSON в текстовое поле слева.
- Нажмите «Преобразовать в XML». Ключи JSON становятся элементами; @_ключи — атрибутами.
- Скопируйте или скачайте отформатированный XML.
- Оберните данные одним корневым ключом — 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>"` становится текстом `<b>hi</b>`, а не вложенными элементами. Используйте промежуточную 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.