Как пользоваться
- Вставьте JSON в поле JSON. Его единственный член верхнего уровня станет корневым элементом.
- Используйте префикс @ для атрибутов, например @id, и #text для текста элемента.
- Выберите Отступ или Без переносов строк (минификация), чтобы получить самый короткий XML.
- Скопируйте XML или скачайте его как converted.xml.
Соответствие, правило за правилом
XML имеет элементы и атрибуты; JSON — объекты, массивы и значения. Соответствие связывает их в одном направлении. Верхний уровень — объект с одним членом: его имя становится корневым элементом. Объект становится элементом. Член, имя которого начинается с @, становится атрибутом, а член с именем #text становится текстом элемента. Любой другой член становится дочерним элементом с этим именем.
Массив даёт один дочерний элемент на каждый элемент массива, все с именем массива, поэтому список книг записывается как повторяющиеся элементы book. Строка, число, true или false становятся текстом. null и пустой объект становятся пустым элементом. Пустой массив не имеет формы в XML и пропускается.
- Имя должно быть именем XML: ключ вроде first name с пробелом не может стать именем элемента.
- Массив внутри массива отклоняется, потому что нет имени элемента для его элементов.
- Текст числа записывается так, как его записывает JavaScript, поэтому число с более чем 15 или 16 значащими цифрами может потерять цифры, как и при чтении JSON.
Что не может сохранить соответствие
XML не имеет типов, поэтому разница между числом 12 и текстом «12» теряется на обратном пути: конвертер из XML в JSON читает текст, похожий на число, как число, если его типизация не отключена. Пустой объект и null в XML выглядят одинаково, а массив из одного элемента возвращается как этот элемент. Это ограничения соответствия, а не ошибки инструмента.
Комментарии и инструкции обработки не записываются, потому что в JSON для них нет места. Текст внутри элемента экранируется, поэтому &, < и > остаются текстом в XML.
Пример: каталог по умолчанию
JSON по умолчанию содержит один член, catalog. Его @version становится атрибутом version элемента catalog, а массив book — двумя элементами book. Каждая книга берёт свой @id как атрибут id, а ключи title, price и inStock становятся дочерними элементами. Значение price null у второй книги становится пустым элементом price.
С двумя пробелами и объявлением вывод содержит восемь элементов: каталог, две книги, три дочерних элемента первой книги и два — второй. Счётчик показывает 8.
Частые вопросы
Как записать атрибут в JSON?
Дайте ключу префикс @. Член "@id": "1" становится id="1" в элементе, который его содержит. Значения атрибутов должны быть текстом, числами или true либо false, а не объектами или массивами.
Почему мой массив превращается в несколько элементов с одним именем?
В XML нет массива. Каждый элемент массива становится одним элементом с именем массива в том же порядке, так XML обычно перечисляет повторяющиеся вещи, например книги или товары.
Почему я получаю ошибку о верхнем уровне?
XML нужен ровно один корневой элемент. JSON должен быть одним объектом с одним членом, например {"catalog": {...}}; список или несколько членов на верхнем уровне не могут образовать один документ.
Почему ключ с пробелом отклоняется?
Имена элементов в XML не могут содержать пробелов. Переименуйте ключ, например в first-name или firstName, перед преобразованием.
Мой JSON отправляется на сервер?
Нет. Преобразование выполняется в вашем браузере. Ничего из вставленного не отправляется на наш сервер и не сохраняется там.
Источники
- RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format (на английском)
- W3C: Extensible Markup Language (XML) 1.0, Fifth Edition (на английском)
Цифры и текст в последний раз проверены вторник, 10 ноября 2026 г..