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

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

Вставьте или перетащите JSON — и получите документ XML с объявлением наверху и одним элементом на каждый ключ. Если у документа один ключ верхнего уровня, он становится корневым элементом; всё остальное помещается внутрь <root>. Список становится повторяющимися элементами с именем своего ключа — "items": [..] даёт несколько элементов <items>, — а список верхнего уровня превращается в элементы <item> внутри <root>.

Ключи, начинающиеся с @, становятся атрибутами, а ключ "#text" — текстом элемента: именно в таком виде пишет инструмент «XML в JSON», так что документ, преобразованный там, возвращается сюда тем же XML. Все остальные значения — текст внутри своего элемента, null становится пустым элементом, а документ выравнивается двумя пробелами на уровень. Ключи, которые XML не допускает как имена — начинающиеся с цифры, с пробелами или символами, — приводятся к допустимым через подчёркивания, поэтому результат всегда разбирается.

Текст экранируется правильно (&, <, >, а в атрибутах ещё кавычки и переводы строк); управляющие символы, которые XML 1.0 вообще не может хранить, удаляются. Кодировка — UTF-8, первые 200 строк видны до скачивания. Ничего не загружается на сервер.

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

  1. Перетащите файл JSON или вставьте JSON в поле.
  2. Нажмите «Преобразовать в XML».
  3. Просмотрите результат и скачайте .xml.

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

Вход
JSON (.json) — файл или вставленный текст
Выход
XML 1.0, UTF-8, объявление наверху, с отступами
Корень
Единственный ключ верхнего уровня, иначе <root>; список верхнего уровня становится элементами <item>
Списки
Повторяющиеся элементы с именем ключа
Где работает
В браузере — без загрузки на сервер

Не подходит для: Подгонки под конкретную XML-схему (SOAP, RSS, формат счёта) — имена элементов следуют вашим ключам JSON, а не схеме.

Как ключи становятся именами элементов

Ключ, начинающийся с @, становится атрибутом, а ключ "#text" — текстом элемента, так что {"item": {"@id": 3, "#text": "A"}} даёт <item id="3">A</item>. Если у документа один ключ верхнего уровня, он и становится корневым элементом; иначе всё помещается внутрь <root>.

Символ, который XML не допускает в имени, заменяется подчёркиванием, а если имя начинается с символа, недопустимого на первом месте, например с цифры, подчёркивание добавляется в начало: "1st place" становится <_1st_place>. Двоеточие сохраняется, только если его префикс объявлен выше, как в "@xmlns:soap"; необъявленный "soap:Body" становится <soap_Body>, потому что иначе его не прочитал бы ни один разборщик, учитывающий пространства имён. Буквы любой письменности разрешены, поэтому ключ вроде "имя" или "名前" остаётся как написан.

Как выглядят значения

Каждое значение записывается текстом, а числа — ровно так, как в JSON: 1.0 остаётся 1.0, а 12345678901234567890 сохраняет все цифры. null и пустой объект оба становятся пустым элементом вроде <note/>, а пустой список не записывает вообще ничего, так что по XML эти три случая не различить.

Управляющие символы — коды ниже 32, кроме табуляции, перевода строки и возврата каретки, — в XML 1.0 записать нельзя вовсе, даже числовой ссылкой вроде &#1;, поэтому они удаляются. Возврат каретки записывается как &#13;, чтобы разборщик его сохранил. В значениях атрибутов кавычки, табуляции и переводы строк тоже записываются ссылками, потому что иначе разборщик превратил бы их в пробелы.

Списки списков теряют группировку

Повторяющиеся элементы выражают только один уровень списка. "m": [[1, 2], [3]] становится тремя элементами <m> со значениями 1, 2 и 3, и то, что 1 и 2 были вместе, теряется. Список верхнего уровня ведёт себя так же: [1, [3, 4]] даёт три элемента <item>. Если группировка важна, сначала оберните каждый внутренний список в объект: [{"values": [1, 2]}, {"values": [3]}] даёт два элемента <item>, и в каждом свой <values>.

Из XML в JSON и обратно

Документ, прошедший через /xml-to-json, возвращается теми же элементами, атрибутами, префиксами пространств имён и текстом, без лишней обёртки. То, чего в JSON никогда не было, не вернётся: комментарии и DOCTYPE, положение текста между дочерними элементами и порядок между элементами с разными именами — они возвращаются сгруппированными по имени. Если в /xml-to-json было включено распознавание типов, значение вроде TRUE вернётся как true; чтобы туда и обратно всё прошло слово в слово, отключите там распознавание.

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

Мои файлы загружаются на сервер?
Нет. Преобразование целиком выполняется в вашем браузере, силами вашего же устройства. Файл не покидает компьютер или телефон, а инструмент, которым вы уже один раз воспользовались, работает и без интернета.
Как представляются списки?
Повторяющимися элементами. {"items": [1, 2]} становится <items>1</items><items>2</items>. Список на самом верху документа превращается в элементы <item> внутри <root>. Пустой список не даёт ни одного элемента.
А ключи с пробелами или цифрами?
Имена элементов XML не могут начинаться с цифры или содержать пробелы. Такие ключи приводятся к допустимым: "1st place" становится _1st_place, "unit price" — unit_price. Всё остальное остаётся как есть.
Можно получить атрибуты вместо дочерних элементов?
Да: поставьте @ перед ключом. {"item": {"@id": 3, "name": "A"}} даёт <item id="3"><name>A</name></item>. Именно в таком виде пишет инструмент «XML в JSON», поэтому путь туда и обратно возвращает тот же документ.

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

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

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