IT Market
Инструменты/Код/Документы/XML в JSON конвертер онлайн — парсинг XML
XML → JSON

Конвертируйте XML в JSON формат

Коротко об инструменте

XML в JSON конвертер онлайн — парсинг XML

Обратная задача: прайс, выгрузка поставщика или ответ SOAP-сервиса пришли в XML, а работать с ними надо в JavaScript или в скрипте на Python. Вставьте документ в поле «XML на входе», нажмите «Конвертировать» — и получите структуру, где имена тегов стали ключами, а несколько одноимённых соседних узлов свернулись в массив. Разбор идёт средствами самой страницы, поэтому чужой прайс не покидает компьютер. Результат копируется или скачивается файлом. Смотрите также: выполнить обратное преобразование в XML, разобрать нечитаемый XML по отступам, выгрузить разобранные узлы в таблицу.

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

  1. Вставьте документ в поле «XML на входе» — вместе с объявлением в первой строке или без него.
  2. Проверьте, что все теги закрыты и корневой элемент один: на незакрытом теге разбор откажет целиком.
  3. Нажмите «Конвертировать» — структура появится в поле «JSON на выходе».
  4. Обратите внимание на повторяющиеся узлы: несколько одноимённых тегов подряд превращаются в массив, один такой тег — нет.
  5. Нажмите «Копировать JSON» или «Скачать JSON», чтобы забрать результат в код либо сохранить файлом.

Вопросы и ответы

Почему числа и даты стали строками в кавычках?

В XML без подключённой схемы все значения — текст: тег 8900 не сообщает, что внутри число. Разбор не догадывается о типах и переносит содержимое как строку. Так безопаснее для артикулов с ведущими нулями и телефонов. Нужные поля приведите к числу или дате уже в коде, где известно, что означает каждый тег.

Что происходит с атрибутами тегов вроде ?

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

Как быть с пространствами имён и префиксами вроде soap:Body?

Двоеточие в имени тега остаётся частью ключа, поэтому в JSON вы увидите ключ вида "soap:Body". Обращаться к нему в коде можно только через квадратные скобки, а не через точку. Если префиксы мешают, удалите их поиском и заменой до конвертации — для чтения выгрузки это обычно безопасно, для подписи запроса нет.

Почему один товар превратился в объект, а два — в массив?

В XML нет отдельного обозначения списка: список из одного элемента выглядит как обычный вложенный тег. Поэтому выгрузка с одной позицией даёт объект, а с двумя — массив, и код, который всегда ждёт массив, ломается на первом же коротком файле. Проверяйте тип узла при обходе или приводите его к массиву принудительно.

Файл выгрузки в несколько десятков мегабайт потянет?

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

Вместо результата появилось сообщение об ошибке — что делать?

Значит документ не разобрался, и страница говорит об этом прямо вместо того, чтобы отдать пустое поле или половину структуры. Текст ошибки — это сообщение самого разборщика браузера, в нём обычно назван номер строки. Типичные причины: незакрытый тег, два корневых элемента подряд, сырые знаки & или < внутри текста, обрезанный при копировании конец файла. Поправьте указанное место и повторите.

Примеры

Позиция из прайс-листа поставщика
До: A-1 Kreslo 8900
После: { "offer": { "id": "A-1", "name": "Kreslo", "price": "8900" } }
Несколько одноимённых узлов подряд
До: sale new
После: { "tags": { "tag": ["sale", "new"] } }