Конвертировать JSON в XML
Соберите валидный XML-документ из JSON: задайте имена корневого и элементного тегов, а ключи, которые нельзя использовать в XML, исправляются, а не теряются.
Перетащите файлы сюда
.json, .ndjson, .txt · до 300 МБ
Больше настроекМеньше настроек
Как конвертировать в XML
- 1
Перетащите файл JSON
Добавьте один файл или до двадцати. Текст читается и парсится прямо в этой вкладке браузера, а при синтаксической ошибке показываются точные строка и столбец.
- 2
Задайте имена корневого и элементного тегов
Корневой тег оборачивает весь документ, а имя элемента используется для каждой записи массива. Ключи, которые начинаются с префикса атрибута, становятся атрибутами.
- 3
Конвертируйте и скачайте XML
Нажмите кнопку, чтобы получить объявленный, отформатированный документ. Пакет файлов возвращается одним ZIP-архивом.
Ключи, которые XML не принимает как имена тегов
К ключам объектов JSON почти нет требований, а к именам элементов XML они есть. «2024 sales», «order id» и пустая строка — валидные ключи, но тегами они быть не могут. Если выкинуть такие поля без предупреждения, данные потеряются. Поэтому недопустимые символы заменяются на подчеркивания, имя, начинающееся с цифры, получает приставку n, а полный список «как было и как стало» возвращается вместе с результатом.
Символы, которые XML запрещает полностью
Экранирование решает проблему амперсандов и угловых скобок. С управляющими символами ниже 0x20 так не выйдет: XML 1.0 отвергает их в любом виде, и не спасает ни сущность, ни блок CDATA. Один случайный 0x0B, попавший из ячейки таблицы, сделает весь документ непригодным к разбору, поэтому такие байты вырезаются и подсчитываются, а счетчик показывается рядом с результатом.
Атрибуты, текстовые узлы и null
Ключ, начинающийся с префикса атрибута (по умолчанию @_), превращается в атрибут родительского элемента вместо дочернего тега, а специальный текстовый ключ хранит собственный текст элемента. В JSON есть значение null, а в XML прямого аналога нет, поэтому вариант выбираете вы: пустой элемент, элемент с пометкой xsi:nil или отсутствие элемента.
Файл не покидает эту вкладку
Чтение файла, парсинг JSON, исправление имен и сериализация XML происходят в вашем браузере, в отдельном потоке, с помощью кода, загруженного вместе со страницей. Нет ни загрузки на сервер, ни очереди обработки, ни аккаунта. Закройте вкладку — и файл исчезнет, потому что его копия нигде больше не создается.
Частые вопросы
Как задать имя корневого элемента?
Имя корня — первое поле на странице, по умолчанию root. Оно должно быть валидным именем XML: буквы, цифры, точки, дефисы и подчеркивания, но не начинаться с цифры и с зарезервированного префикса xml. Если имя неверное, вы сразу увидите подсказку и предложенное исправление.
Как превратить ключ JSON в атрибут XML?
Поставьте в JSON перед ключом префикс @_ — и он станет атрибутом охватывающего элемента, а не вложенным тегом. Префикс можно настроить длиной до трех символов, а если убрать его целиком, сопоставление атрибутов отключится, и каждый ключ превратится в элемент.
Что происходит с ключами, которые не подходят для имени тега XML?
По умолчанию они исправляются: недопустимые символы заменяются на подчеркивания, ведущая цифра получает префикс n, а пустой ключ заменяется на имя элемента массива. Вы получаете предупреждение со списком переименований. Можно также включить исправление всех ключей без предупреждений или, наоборот, останавливать конвертацию с ошибкой на первом неверном ключе.
Что происходит со значениями null?
Есть три варианта. Пустой элемент сохраняет поле видимым в документе. xsi:nil помечает его как явный null, как ожидают потребители со схемой, и объявляет пространство имен в корне. Пропуск полностью убирает поле. По умолчанию используются пустые элементы, потому что они лучше всего переживают обратную конвертацию.
Когда нужен CDATA?
Заметно реже, чем кажется, потому что обычное экранирование всегда корректно. CDATA обычно нужен для удобочитаемости, если значение содержит много текста, похожего на разметку. Включите его — и строки длиной больше 200 символов или со знаками < и & будут записываться в блок CDATA. Встречающийся внутри такой строки буквальный ]]> разбивается между двумя блоками, чтобы вывод оставался валидным.
Сохраняется ли порядок ключей?
Да. Элементы записываются в том порядке, в каком ключи идут в исходном JSON, а элементы массивов сохраняют порядок индексов. Атрибуты выводятся перед дочерними элементами, как того требует XML, но между собой также следуют порядку исходных ключей, так что вывод остается достаточно стабильным для сравнения между запусками.
Загружается ли мой файл куда-то?
Нет. Все происходит в вашей вкладке браузера, а парсер JSON и сериализатор XML — часть страницы, а не удаленного сервиса. На сервере нет компонента, который мог бы принять файл, поэтому ничего не сохраняется, не логируется и не остается после закрытия вкладки.