ДокументыИзображенияМедиаИнструменты PDF

Конвертер JSON в XML Online

Конвертируйте JSON в валидный XML прямо в браузере. Идеально для интеграции REST API с SOAP-сервисами, ресурсами Android и XML-конфигурациями.

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <users>
    <user id="1">
      <name>John</name>
      <age>30</age>
    </user>
    <user id="2">
      <name>Maria</name>
      <age>25</age>
    </user>
  </users>
</root>
Processed in your browser

JSON в XML: интегрируйте современные API с устаревшими системами

REST в SOAP

Интегрируйте ответы современных REST API с корпоративными SOAP-веб-сервисами, требующими XML.

Ресурсы Android

Генерируйте strings.xml, arrays.xml и XML layout-конфигурации из JSON-данных вашего API.

100% конфиденциально

Ваш JSON конвертируется в браузере. Данные вашего API никогда не покидают ваше устройство.

Корректный XML

Генерируйте валидный XML по стандарту W3C XML 1.0 с объявлением кодировки, корректным экранированием и вложенной структурой.

Три шага — никаких сложностей

1

Вставьте ваш JSON

Вставьте JSON из вашего REST API, ответа веб-сервиса или любого JSON-объекта, который нужно представить в XML.

2

Мгновенная конвертация

Конвертер генерирует корректный XML согласно стандарту W3C XML 1.0 с читаемыми отступами.

3

Скопируйте получившийся XML

Скопируйте XML для использования в вашей SOAP-интеграции, файле ресурсов Android, файле конфигурации или любой системе на основе XML.

Остались вопросы?

Массивы JSON не имеют прямого эквивалента в XML, поскольку XML не имеет концепции массива как нативного типа — только элементы и атрибуты. Наиболее широко используемое соглашение — повторять элемент-обёртку для каждого элемента массива. Например, ["a", "b", "c"] под ключом "item" генерирует три элемента <item>a</item><item>b</item><item>c</item>. Для массивов объектов каждый объект становится дочерним элементом с его свойствами в виде вложенных элементов или атрибутов. Это соглашение принято в xml2js (Node.js), JAXB (Java) и большинстве фреймворков XML-сериализации.

Да, с использованием соглашения о префиксе @. В соглашении BadgerFish (задокументировано на badgerfish.de и широко принято) ключи JSON, начинающиеся с @, становятся атрибутами XML родительского элемента. Например, {"element": {"@id": "123", "#text": "содержимое"}} генерирует <element id="123">содержимое</element>. Это соглашение используется в xml2js с опцией mergeAttrs, в Jackson XML (Java) с @JacksonXmlProperty и в System.Xml.Serialization в .NET с [XmlAttribute].

Пространства имён XML (определены в спецификации W3C XML Namespaces, январь 1999 года) позволяют смешивать XML-словари без конфликтов имён. При конвертации JSON в XML пространства имён можно представить как атрибуты xmlns корневого элемента или отдельных элементов. Например, для генерации SOAP XML с пространством имён http://schemas.xmlsoap.org/soap/envelope/ добавьте ключ @xmlns:soap в корневой объект. Точная спецификация зависит от целевой системы — SOAP, KML, GPX, RSS 2.0, Atom — и требует адаптации схемы конвертации к соответствующему XML-словарю.

Специальные символы в текстовых значениях JSON автоматически экранируются по правилам XML: < становится &lt;, > становится &gt;, & становится &amp;, " становится &quot;, а ' становится &apos;. Для содержимого с большими блоками текста с несколькими специальными символами (такими как встроенный HTML или SQL-код) более подходящей является секция CDATA: <![CDATA[содержимое с <тегами> и & без экранирования]]>. XML-парсеры обрабатывают содержимое CDATA как буквальный текст без обработки экранированных сущностей.

Сгенерированный XML содержит объявление <?xml version="1.0" encoding="UTF-8"?> в начале. UTF-8 — кодировка, рекомендованная W3C для XML-документов (XML 1.0 пятое издание, раздел 4.3.3). UTF-8 совместима с ASCII для основных символов и может представлять любой символ Unicode, обеспечивая совместимость с текстом на любом языке. SOAP-системы и большинство веб-сервисов по умолчанию ожидают UTF-8.

Да. RSS 2.0 (спецификация Дейва Уинера, 2002) и XML sitemap (протокол Sitemaps, определённый на sitemaps.org и принятый Google в 2005 году) являются XML-словарями с предопределённой структурой. Для генерации RSS из JSON нужно сопоставить структуру JSON с обязательными элементами RSS 2.0: <channel> с <title>, <link>, <description> и элементами <item> с <title>, <link>, <pubDate>, <guid>. Для sitemap схема проще: корневой элемент <urlset> с xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" и элементы <url> с <loc>, <lastmod>, <changefreq>, <priority>. Конвертер генерирует валидный XML; сопоставление полей JSON с XML остаётся ответственностью разработчика.

Конвертировать JSON в XML: интеграция REST-SOAP, ресурсы Android и генерация лент

XML (Extensible Markup Language) был определён W3C в рекомендации XML 1.0 (опубликована 10 февраля 1998 года, в настоящее время действует пятое издание от ноября 2008 года) как метаязык для определения структурированных разметочных словарей. На протяжении 2000-х годов XML был универсальным форматом обмена данными: SOAP (Simple Object Access Protocol, спецификация W3C 2003 года) использовал XML в качестве формата сообщений для корпоративных веб-сервисов; RSS 2.0 (опубликован Дейвом Уинером в 2002 году) и Atom 1.0 (RFC 4287, декабрь 2005 года) распространяли ленты контента в XML; Android (запущен Google в 2008 году) использовал XML для layouts, strings и манифестов приложений; и SVG (Scalable Vector Graphics, W3C 1.1 от 2003 года) является XML. Необходимость конвертации JSON в XML возникает в трёх основных сценариях: интеграция современных REST API с корпоративными SOAP- или EDI-системами (Electronic Data Interchange); генерация XML-ресурсов для Android (strings.xml, arrays.xml, конфигурации предпочтений) из backend JSON-данных; и создание RSS-лент, sitemap или документов KML/GPX из данных, хранящихся в JSON или возвращаемых REST API.

Конвертация JSON в XML требует разрешения фундаментальных различий между двумя моделями данных. JSON — это дерево значений: объекты (пары ключ-значение), массивы, строки, числа, булевы значения и null. XML — это дерево узлов: элементы (которые могут одновременно иметь как атрибуты, так и дочернее/текстовое содержимое), текст, комментарии, инструкции обработки и секции CDATA. Наиболее широко принятые соглашения конвертации: соглашение BadgerFish (задокументировано на badgerfish.de), где ключи с префиксом @ становятся атрибутами XML, а специальный ключ #text становится текстовым содержимым элемента; и соглашение Parker (проще, без атрибутов, все значения как дочерние элементы). Для интеграции SOAP XML должен соответствовать WSDL (Web Services Description Language, W3C 2001) сервиса, что требует явного сопоставления полей JSON с типами, определёнными в XSD-схеме. Для ресурсов Android элементы <string>, <string-array> и <plurals> в strings.xml имеют специфические соглашения, которые необходимо соблюдать для корректной обработки компилятором aapt2.

Для крупномасштабного производственного использования наиболее широко применяемыми инструментами для конвертации JSON в XML являются: в Node.js — xml2js (более 25 миллионов загрузок в месяц на npm) и xmlbuilder2; в Java — Jackson с модулем jackson-dataformat-xml и спецификация JAXB (Jakarta XML Binding, часть Jakarta EE); в Python — библиотека xmltodict в сочетании с xml.etree из стандартной библиотеки; в .NET — System.Xml.Serialization и встроенный конвертер JsonConvert.SerializeXmlNode из Newtonsoft.Json. Для генерации sitemap из JSON-данных спецификация протокола Sitemaps (sitemaps.org, принята Google, Bing и Yahoo в 2006 году) определяет строгую XML-схему: корневой элемент urlset должен включать атрибут xmlns с корректным пространством имён. Валидация сгенерированного XML по XSD-схеме целевой системы — фундаментальный шаг в корпоративных интеграциях; инструменты xmllint (часть libxml2) или онлайн-валидатор W3C позволяют проверить соответствие перед развёртыванием.