Преобразовать XML в JSON

Работает на вашем устройстве · Ваш файл никогда не покидает устройство.

Перетащите файл .xml или вставьте XML из API, ленты или файла настроек — и получите JSON, с которым удобно работать. Документ читает встроенный XML-разбор браузера в кодировке, объявленной в первой строке, поэтому всё корректно оформленное преобразуется, а в повреждённом файле указывается строка и столбец проблемы и что именно там не так.

Соответствие фиксировано и обратимо: каждый элемент становится ключом; соседи с одинаковым именем — массивом; атрибуты сохраняются под ключами, начинающимися с @ (id="A3" становится "@id": "A3"); а если элемент содержит и текст, и дочерние элементы или атрибуты, текст попадает в "#text". Элемент только с текстом становится самим значением.

При включённом распознавании типов текст вроде 12, true или пустой элемент становятся числом, логическим значением или null; отключите его, чтобы всё осталось текстом. Имена с пространствами имён (soap:Body) сохраняются как написаны. Предпросмотр показывает первые 200 строк до скачивания.

Как Преобразовать XML в JSON

  1. Перетащите файл XML или вставьте XML в поле.
  2. Решите, нужно ли типизировать числа, логические значения и пустые элементы.
  3. Нажмите «Преобразовать в JSON» и просмотрите результат.
  4. Скачайте .json.

Поддерживаемые форматы и ограничения

Вход
XML (.xml) — файл или вставленный текст, в объявленной в нём кодировке
Выход
JSON с отступами, UTF-8
Атрибуты
Сохраняются как ключи "@имя"
Повторяющиеся элементы
Становятся массивом
Где работает
В браузере — без загрузки на сервер

Не подходит для: Документов, которые не являются корректным XML (незакрытые теги, HTML-страницы) — разбор сообщает о первой проблеме, а не угадывает.

Какие значения меняют тип

Распознавание типов действует и на атрибуты, и на текст и меняет значение только там, где ничего не теряется. При включённом распознавании id="3" становится "@id": 3, а id="007" остаётся текстом "007". 1.50 тоже остаётся текстом, потому что как число оно записалось бы обратно как 1.5. TRUE становится true. Пустой элемент вроде <note/> и элемент, в котором одни пробелы, становятся null; слово NULL остаётся текстом. Даты вроде 2024-01-05 не преобразуются никогда.

При выключенном распознавании пустые элементы становятся "", а каждое значение остаётся текстом ровно в том виде, как написано.

Чего JSON не может сохранить

Некоторым частям XML-документа нет места в JSON, и они отбрасываются: комментарии, инструкции обработки и DOCTYPE. Секции CDATA становятся обычным текстом, так что <a><![CDATA[<b>x</b>]]></a> даёт "a": "<b>x</b>".

Порядок между элементами с разными именами теряется, потому что каждое имя становится одним ключом. В <step>1</step><note/><step>2</step> оба step собираются в "step": [1, 2], и нигде не записано, что note стоял между ними. Текст вперемешку с разметкой так же теряет своё место: <p>Hello <b>world</b> and <i>you</i>!</p> становится "b": "world", "i": "you" и "#text": "Hello and !". Для документов, где этот порядок и есть содержание, например для оформленного текста, такое соответствие не подходит.

Пространства имён, сущности, ошибки и кодировки

Имена с префиксами сохраняются как написаны, а объявления пространств имён появляются как атрибуты: <soap:Envelope xmlns:soap="…"> даёт ключ "soap:Envelope" с "@xmlns:soap" внутри, и /json-to-xml превращает и то и другое обратно в тот же XML.

Кроме сущностей, которые определяет собственный DOCTYPE документа, понимаются только пять встроенных в XML (&amp; &lt; &gt; &quot; &apos;) и числовые вроде &#160;. Когда разбор останавливается, сообщение называет строку и столбец и простыми словами говорит, что не так: элемент закрыт другим именем, встретилось неизвестное имя вроде &nbsp; (пишите вместо него &#160;), одиночный & или <, второй элемент верхнего уровня или файл обрывается слишком рано.

Файл читается в кодировке, объявленной в его первой строке, например ISO-8859-1 или windows-1251. Без объявления читается UTF-8 или UTF-16, а старые кодовые страницы распознаются так, как описано на /csv-to-json.

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

Мои файлы загружаются на сервер?
Нет. Преобразование целиком выполняется в вашем браузере, силами вашего же устройства. Файл не покидает компьютер или телефон, а инструмент, которым вы уже один раз воспользовались, работает и без интернета.
Как обрабатываются атрибуты и смешанное содержимое?
Атрибуты становятся ключами с префиксом @, так что <item id="A3"> даёт "@id": "A3". Если у элемента есть текст вместе с атрибутами или дочерними элементами, текст хранится в "#text"; элемент только с текстом становится этим текстом напрямую.
Почему один элемент — объект, а повторяющиеся — массив?
Элемент, встречающийся у родителя один раз, становится объектом (или значением); два и больше соседей с одним именем — массивом. Это в точности повторяет документ, поэтому список из одного элемента — это один объект; если вашему коду нужен массив в обоих случаях, оберните его на принимающей стороне.
Как выглядит верх JSON?
Один ключ с именем корневого элемента, содержащий всё внутри него — <records>…</records> становится {"records": {...}}. Так сохраняется имя корня, и инструмент «JSON в XML» может собрать тот же документ обратно.

Похожие инструменты

Ещё в разделе Таблицы и данные

Эта страница на других языках: English · العربية · Deutsch · Français · Español · Português · 中文 · हिन्दी · Türkçe · עברית · فارسی · اردو · Bahasa Indonesia · বাংলা