Конвертер JSON ↔ XML
Конвертация JSON в XML и XML в JSON с понятными ошибками и предупреждениями о потерях.
Данные обрабатываются в браузере и никуда не отправляются
Здесь появится результат
Выберите направление, вставьте данные слева и нажмите «Конвертировать»
Как пользоваться
Выберите направление - «JSON → XML» или «XML → JSON», вставьте данные слева (или перетащите файл, или нажмите «Пример») и нажмите «Конвертировать». Если исходный документ некорректен, инструмент покажет ошибку со строкой и столбцом - клик по ней переносит курсор в редактор. «Поменять местами» перекладывает результат в левое поле и меняет направление - так удобно проверить обратное преобразование.
У JSON и XML нет единого стандарта соответствия, поэтому используется распространённое соглашение: атрибуты записываются как ключи с «@» ("@id": "1"), текст элемента с атрибутами или вложенными элементами - как ключ "#text", повторяющиеся элементы - как массив, пустой элемент - как null. В обратную сторону то же правило работает зеркально. Если в JSON нет единственного ключа верхнего уровня, документ оборачивается в корневой элемент - его имя можно задать в поле «Корневой элемент».
Частые ошибки
Вот что чаще всего удивляет при конвертации между JSON и XML:
Один элемент - объект, несколько - массив
Если у <items> один <item>, в JSON он станет объектом, а если два - массивом. Код, который читает такой JSON, должен уметь обрабатывать оба случая. Это свойство формата XML, а не ошибка конвертера.
В XML все значения - строки
XML не различает числа, true/false и текст. По умолчанию все значения остаются строками; режим «Числа и true/false» превращает подходящие значения в типизированные - но только такие, которые не потеряют точность.
Ведущие нули и длинные числа
Телефон 0791234 или идентификатор 12345678901234567890 в режиме типов остаются строками: число потеряло бы нули или точность (JavaScript хранит числа как double). Это сделано намеренно.
Смешанное содержимое
В <p>Hello <b>big</b> world</p> текст чередуется с элементами. JSON такого порядка не выразит: текст попадёт в «#text», а положение элемента потеряется. Инструмент предупреждает об этом.
Комментарии и DOCTYPE пропадают
В JSON нет комментариев, инструкций обработки и DOCTYPE, поэтому при конвертации XML → JSON они отбрасываются. Инструмент показывает предупреждение с количеством отброшенного.
Ключ JSON - не всегда имя XML
Ключи вроде "my key", "1abc" или пустая строка нельзя использовать как имена элементов: имя должно начинаться с буквы, «_» или «:» и не содержать пробелов. Инструмент назовёт проблемный ключ и покажет его строку.
Атрибут или элемент
Ключ с «@» становится атрибутом, а значение атрибута может быть только скалярным: строкой, числом, true, false или null. Объект или массив в атрибуте - ошибка.
У XML ровно один корень
JSON-массив или объект с несколькими ключами на верхнем уровне нельзя записать без общего корня. Такой документ оборачивается в элемент root (имя можно изменить), а элементы массива верхнего уровня получают имя item.
Частые вопросы
Отправляются ли мои данные на сервер?
Нет. Разбор и конвертация выполняются прямо в браузере, содержимое документов никуда не передаётся.
По какому стандарту сопоставляются JSON и XML?
Единого стандарта нет. Используется распространённое соглашение с «@» для атрибутов и «#text» для текста - оно близко к тому, что делают многие библиотеки, но не идентично ни одной. Если ваш API ждёт другой формат, сначала проверьте его правила.
Можно ли получить исходный документ обратным преобразованием?
Для данных без смешанного содержимого и комментариев - да, структура сохранится. Типы значений XML не хранит, поэтому числа и true/false после прохода через XML вернутся строками, если не включён режим типов.
Как обрабатываются пространства имён?
Префиксы сохраняются в именах как есть ("ns:item"), а объявления xmlns:ns - как обычные атрибуты ("@xmlns:ns"). Конвертация в XML с префиксом без объявления даёт предупреждение: такой документ XML-парсер не примет.
Какой максимальный размер файла можно загрузить?
До 5 МБ. Допустимая вложенность JSON - до 1000 уровней. Для больших файлов показывается индикатор обработки.
Можно ли дать ссылку на уже заполненный пример?
Да, добавьте к адресу страницы параметр ?example=json, ?example=json-error, ?example=xml или ?example=xml-error - откроется страница с нужным направлением и примером.
Похожие инструменты
Курс «Проектирование API и интеграций»
Глубокое погружение в REST, gRPC, SOAP, проектирование баз данных и брокеры сообщений (Kafka, RabbitMQ). Делегирование рутины нейросетям (ИИ). Перестанете бояться технических собеседований и начнете говорить с разработчиками на одном языке. Курс собран так, чтобы пробить зарплатный потолок и вырасти в грейде - ученики тому подтверждение.
Перейти к курсу на Stepik