Перейти к содержимому
Инструменты
Загрузка интерфейса…

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

Конвертация JSON в XML и XML в JSON с понятными ошибками и предупреждениями о потерях.

Данные обрабатываются в браузере и никуда не отправляются

Направление
Отступ
Объявление XML

Ввод

Перетащите файл сюда или выберите на диске

Результат

Здесь появится результат

Выберите направление, вставьте данные слева и нажмите «Конвертировать»

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

Выберите направление - «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> текст чередуется с элементами. Используемое здесь соглашение с #text не сохраняет этот порядок: положение частей текста относительно вложенных элементов теряется. Инструмент предупреждает об этом; другие модели JSON могут хранить смешанное содержимое массивом узлов.

Комментарии и DOCTYPE пропадают

В JSON нет комментариев, инструкций обработки и DOCTYPE, поэтому при конвертации XML → JSON они отбрасываются. Инструмент показывает предупреждение с количеством отброшенного.

Ключ JSON - не всегда имя XML

Ключи вроде "my key", "1abc" или пустая строка нельзя использовать как имена элементов: имя должно начинаться с буквы, «_» или «:» и не содержать пробелов. Инструмент назовёт проблемный ключ и покажет его строку.

Атрибут или элемент

Ключ с «@» становится атрибутом, а значение атрибута может быть только скалярным: строкой, числом, true, false или null. Объект или массив в атрибуте - ошибка.

У XML ровно один корень

JSON-массив или объект с несколькими ключами на верхнем уровне нельзя записать без общего корня. Такой документ оборачивается в элемент root (имя можно изменить), а элементы массива верхнего уровня получают имя item.

Частые вопросы

Отправляются ли мои данные на сервер?

Нет. Разбор и конвертация выполняются прямо в браузере, содержимое документов никуда не передаётся.

По какому стандарту сопоставляются JSON и XML?

Единого стандарта нет. Используется распространённое соглашение с «@» для атрибутов и «#text» для текста - оно близко к тому, что делают многие библиотеки, но не идентично ни одной. Если ваш API ждёт другой формат, сначала проверьте его правила.

Можно ли получить исходный документ обратным преобразованием?

Обратное преобразование не гарантирует точное восстановление исходного документа. Влияют смешанное содержимое, комментарии, различие пустого элемента и пустой строки, одиночных элементов и массивов, а также выбранное преобразование типов. Сравните результат на своём примере перед использованием в интеграции.

Как обрабатываются пространства имён?

Префиксы сохраняются в именах как есть ("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, GraphQL и JSON-RPC, архитектурные подходы, SQL и NoSQL, брокеры сообщений и работа с ИИ. Программа курса помогает систематизировать знания об API и интеграциях; содержание и условия обучения смотрите на Stepik.

Перейти к курсу на Stepik