VELDAT

Перевести XML в JSON

Текст обрабатывается в браузере и не отправляется на сервер.

Переводит XML в JSON: элементы становятся ключами, атрибуты — ключами с @, повторяющиеся элементы — массивом. Числа и true/false распознаются, а в настройках их можно оставить текстом.

Данные

Вставьте данные или откройте файл: дерево и перевод в другие форматы появятся здесь.

Схема появится, когда в поле будут данные

Дальше обычно делают

Зачем переводить XML в JSON

XML — формат из вложенных тегов, на нём построены выгрузки из 1С, электронные документы, отчётность в налоговую и ответы многих банковских и государственных сервисов. Читать такой файл трудно: данные перемешаны с тегами, а часть значений спрятана в атрибутах. JSON хранит те же данные короче, с ним работают современные программы, скрипты и сервисы.

Перевод пригодится разработчику, который связывает старую систему с новой, и аналитику, которому прислали XML-выгрузку: в JSON проще найти нужное поле, посмотреть структуру деревом или перевести список записей в таблицу CSV для Excel. Если результат пойдёт в автоматическую обработку, проверьте перевод на нескольких файлах: форма JSON зависит от того, сколько раз в файле повторяется элемент.

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

  1. Вставьте XML в поле слева или откройте файл .xml.

  2. Справа откроется JSON. Правило перевода написано под результатом.

  3. Скопируйте или скачайте JSON. Если ИНН, коды или номера нужны текстом, снимите в «Настройках» флажок «Распознавать числа в XML и CSV».

Пример

Было
<order id="7">
  <item sku="A-100">Бумага</item>
  <item sku="B-205">Картридж</item>
  <paid>false</paid>
  <inn>007701</inn>
</order>
Стало
{
  "order": {
    "@id": 7,
    "item": [
      {
        "@sku": "A-100",
        "#text": "Бумага"
      },
      {
        "@sku": "B-205",
        "#text": "Картридж"
      }
    ],
    "paid": false,
    "inn": "007701"
  }
}

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

Как переводятся атрибуты и текст элемента?

Атрибут становится ключом с @: id="7" — "@id": 7. Если у элемента есть и атрибуты, и текст, текст попадает в ключ #text. Элемент без атрибутов становится просто значением: <paid>false</paid> — "paid": false.

Почему один элемент не стал массивом?

Массивом становятся элементы, которые повторяются. Если в другом файле <item> один, в JSON будет объект, а не массив из одного объекта. Код, который читает такой JSON, должен принимать оба варианта.

Почему `007701` остался строкой, а `7` стал числом?

Числа с ведущими нулями остаются строками, иначе потерялись бы нули. Остальные числа и true/false распознаются. Чтобы все значения остались текстом, снимите флажок «Распознавать числа в XML и CSV».

Что с пространствами имён и комментариями?

Префиксы остаются частью имени ключа: <s:Body> — "s:Body", объявления xmlns — ключами с @. Комментарии XML в JSON не переносятся.

Задача сложнее инструмента

Архитектуру и интеграции с API можно обсудить на консультации: выберите время, и вы получите письменный итог с конкретными шагами.

Записаться на консультацию