Работает на вашем устройстве · Ваш файл никогда не покидает устройство.
Вставьте или перетащите JSON — и получите документ XML с объявлением наверху и одним элементом на каждый ключ. Если у документа один ключ верхнего уровня, он становится корневым элементом; всё остальное помещается внутрь <root>. Список становится повторяющимися элементами с именем своего ключа — "items": [..] даёт несколько элементов <items>, — а список верхнего уровня превращается в элементы <item> внутри <root>.
Ключи, начинающиеся с @, становятся атрибутами, а ключ "#text" — текстом элемента: именно в таком виде пишет инструмент «XML в JSON», так что документ, преобразованный там, возвращается сюда тем же XML. Все остальные значения — текст внутри своего элемента, null становится пустым элементом, а документ выравнивается двумя пробелами на уровень. Ключи, которые XML не допускает как имена — начинающиеся с цифры, с пробелами или символами, — приводятся к допустимым через подчёркивания, поэтому результат всегда разбирается.
Текст экранируется правильно (&, <, >, а в атрибутах ещё кавычки и переводы строк); управляющие символы, которые XML 1.0 вообще не может хранить, удаляются. Кодировка — UTF-8, первые 200 строк видны до скачивания. Ничего не загружается на сервер.
Не подходит для: Подгонки под конкретную 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 записать нельзя вовсе, даже числовой ссылкой вроде , поэтому они удаляются. Возврат каретки записывается как , чтобы разборщик его сохранил. В значениях атрибутов кавычки, табуляции и переводы строк тоже записываются ссылками, потому что иначе разборщик превратил бы их в пробелы.
Повторяющиеся элементы выражают только один уровень списка. "m": [[1, 2], [3]] становится тремя элементами <m> со значениями 1, 2 и 3, и то, что 1 и 2 были вместе, теряется. Список верхнего уровня ведёт себя так же: [1, [3, 4]] даёт три элемента <item>. Если группировка важна, сначала оберните каждый внутренний список в объект: [{"values": [1, 2]}, {"values": [3]}] даёт два элемента <item>, и в каждом свой <values>.
Документ, прошедший через /xml-to-json, возвращается теми же элементами, атрибутами, префиксами пространств имён и текстом, без лишней обёртки. То, чего в JSON никогда не было, не вернётся: комментарии и DOCTYPE, положение текста между дочерними элементами и порядок между элементами с разными именами — они возвращаются сгруппированными по имени. Если в /xml-to-json было включено распознавание типов, значение вроде TRUE вернётся как true; чтобы туда и обратно всё прошло слово в слово, отключите там распознавание.
Ещё в разделе Таблицы и данные
Эта страница на других языках: English · العربية · Deutsch · Français · Español · Português · 中文 · हिन्दी · Türkçe · עברית · فارسی · اردو · Bahasa Indonesia · বাংলা