JSON (JavaScript Object Notation) и XML (eXtensible Markup Language) — два доминирующих формата обмена данными в разработке программного обеспечения. JSON использует пары ключ-значение и массивы с компактным синтаксисом, тогда как XML оборачивает данные в открывающие и закрывающие теги с необязательными атрибутами. Конвертация JSON в XML означает перевод структурных примитивов JSON — объектов, массивов, строк, чисел, булевых значений и null — в правильно оформленный XML-документ с соответствующей вложенностью элементов.
XML по-прежнему является обязательным форматом во многих корпоративных системах, государственных API, SOAP-веб-сервисах и отраслевых стандартах, таких как HL7 (здравоохранение), FpML (финансы) и XBRL (финансовая отчётность). Когда ваше приложение выдаёт JSON, а принимающая система ожидает XML, конвертер JSON в XML выполняет преобразование без ручной реструктуризации. Конвертация следует предсказуемым правилам сопоставления: объекты JSON становятся элементами XML, элементы массивов становятся повторяющимися дочерними элементами, а примитивные значения превращаются в текстовые узлы.
Не существует единого RFC или стандарта W3C, определяющего, как JSON отображается в XML. Разные библиотеки дают разный результат для одних и тех же входных данных. Наиболее распространённое соглашение (используемое этим инструментом) оборачивает весь документ в настраиваемый корневой элемент, преобразует каждый ключ JSON в дочерний XML-элемент, а элементы массивов представляет как повторяющиеся элементы с одним именем тега. Понимание этих правил сопоставления важно, когда принимающая система требует соответствия конкретной XML-схеме (XSD).
Зачем использовать онлайн-конвертер JSON в XML?
Писать XML вручную из источника JSON — утомительно и ненадёжно. Непарные теги, забытые закрывающие элементы и неверная вложенность порождают документы, которые не проходят проверку по схеме. Конвертер выполняет структурное преобразование автоматически.
⚡
Мгновенная конвертация в браузере
Вставьте JSON и получите правильно оформленный XML за миллисекунды. Никаких обращений к серверу, настройки CLI и установки зависимостей. Конвертация полностью выполняется в JavaScript на вашем устройстве.
🔒
Конфиденциальность данных
Входные данные JSON никогда не покидают вкладку браузера. Разбор и генерация XML происходят на стороне клиента, поэтому конвертировать данные, содержащие ключи API, токены или производственные данные, безопасно.
📋
Без регистрации и авторизации
Откройте страницу, вставьте JSON и скопируйте XML. Никаких форм регистрации, подтверждения email или ограничений на использование между вами и преобразованными данными.
🌳
Автоматическая обработка вложенных структур
Глубоко вложенные объекты, смешанные массивы и значения null конвертируются корректно. Инструмент сохраняет полную иерархию входного JSON в результирующем XML-дереве.
Сценарии использования JSON to XML
Интеграция с SOAP-веб-сервисами
Ваш REST API возвращает JSON, но партнёрский SOAP-эндпоинт требует XML в теле запроса. Конвертируйте JSON-данные в XML перед их оборачиванием в SOAP-конверт.
Корпоративный обмен данными
Устаревшие ERP- и CRM-системы нередко принимают только XML-импорт. Конвертируйте JSON-экспорты из современных инструментов в XML-потоки, соответствующие ожидаемой схеме.
Конфигурация CI/CD-пайплайна
Некоторые инструменты сборки (Maven, Ant, MSBuild) используют XML-конфигурационные файлы. Генерируйте фрагменты XML-конфигурации из JSON-файлов параметров в ходе автоматизированных сборок.
Подготовка тестовых данных для QA
Генерируйте XML-тестовые fixture из JSON-наборов данных. Быстро создавайте валидные XML-документы для тестирования XML-парсеров, XSLT-преобразований или XPath-запросов.
Мосты между форматами в пайплайнах обработки данных
ETL-пайплайны, принимающие XML, могут получать данные от API, которые выдают JSON. Конвертируйте промежуточные JSON-результаты в XML перед загрузкой в XML-этап обработки.
Изучение структуры XML
Студенты, изучающие XML, могут вставить знакомые JSON-структуры и увидеть эквивалентное XML-представление. Это делает вложенность тегов, иерархию элементов и структуру документа наглядными.
Правила сопоставления JSON и XML
Поскольку универсального стандарта конвертации JSON в XML не существует, разные инструменты дают разный результат. В таблице ниже приведены соглашения о сопоставлении, используемые этим конвертером и большинством популярных библиотек (js2xmlparser, xmlbuilder, fast-xml-parser). Соглашение о повторяющихся дочерних элементах для массивов стало доминирующим, потому что оно отражает то, как XML-схемы естественным образом моделируют коллекции: каждый элемент является полноценным XML-элементом, а не вложенным дочерним — и это удобно для XPath-запросов и XSLT-преобразований.
JSON Type
JSON Example
XML Output
Object
{"name": "Alice"}
<name>Alice</name>
Nested object
{"user": {"age": 30}}
<user><age>30</age></user>
Array
{"colors": ["red", "blue"]}
<colors>red</colors><colors>blue</colors>
String
"hello"
<root>hello</root>
Number
42
<root>42</root>
Boolean
true
<root>true</root>
Null
null
<root/>
Empty object
{}
<root/>
Empty array
[]
(no child elements)
Примеры кода
Ниже приведены готовые фрагменты кода для конвертации JSON в XML в трёх средах. Каждый пример создаёт правильно оформленный XML из образца JSON-объекта.
package main
import (
"encoding/json"
"encoding/xml"
"fmt"
)
type Item struct {
SKU string `json:"sku" xml:"sku"`
Qty int `json:"qty" xml:"qty"`
}
type Order struct {
XMLName xml.Name `xml:"order"`
ID int `json:"id" xml:"id"`
Items []Item `json:"items" xml:"items"`
Shipped bool `json:"shipped" xml:"shipped"`
}
func main() {
raw := `{"id":1024,"items":[{"sku":"A1","qty":2},{"sku":"B3","qty":1}],"shipped":false}`
var order Order
json.Unmarshal([]byte(raw), &order)
out, _ := xml.MarshalIndent(order, "", " ")
fmt.Println(xml.Header + string(out))
// → <?xml version="1.0" encoding="UTF-8"?>
// → <order>
// → <id>1024</id>
// → <items>
// → <sku>A1</sku>
// → <qty>2</qty>
// → </items>
// → ...
}
Часто задаваемые вопросы
Является ли конвертация JSON в XML обратимой (без потерь)?
Структурно — да: каждое значение JSON отображается в XML-элемент или текстовый узел. Однако XML не различает числа, булевы значения и строки так, как это делает JSON. Значение 42 в JSON становится текстовым содержимым «42» в XML. Если принимающая система использует объявления типов XML Schema (XSD), она может восстановить исходные типы при разборе. Без схемы информация о типах в конвертированном документе фактически теряется.
Как JSON-массивы конвертируются в XML?
Каждый элемент массива становится дочерним XML-элементом с одинаковым именем тега. Например, JSON-массив "colors": ["red", "blue"] создаёт два элемента: <colors>red</colors> и <colors>blue</colors>. Некоторые конвертеры оборачивают массивы в родительский элемент (например, <colorsList>), но подход с повторяющимися элементами более распространён и соответствует соглашению, используемому в JAXB, Jackson и fast-xml-parser.
Что происходит со значениями null при конвертации?
JSON null обычно конвертируется в пустой XML-элемент — например, "middle_name": null превращается в <middle_name/>. Некоторые библиотеки добавляют атрибут xsi:nil="true" для явного обозначения null, что полезно, когда целевая система проверяет документ по XSD-схеме. Этот конвертер по умолчанию выводит самозакрывающийся пустой элемент.
Можно ли конвертировать XML обратно в JSON?
Да, но обратное преобразование не всегда симметрично. Возможности XML — атрибуты, инструкции обработки, комментарии, смешанное содержимое и пространства имён — не имеют прямых эквивалентов в JSON. Конвертация XML в JSON и обратно в XML может дать структурно иной документ. Если нужна конвертация XML в JSON, воспользуйтесь специализированным конвертером XML to JSON, который сохраняет атрибуты и пространства имён.
Как обрабатывать ключи JSON, недопустимые в качестве имён XML-элементов?
Имена XML-элементов не могут начинаться с цифры, содержать пробелы или большинство специальных символов. Если в вашем JSON есть ключ вроде «2024-data» или «first name», конвертер должен его нормализовать — как правило, добавляя подчёркивание в начало или заменяя недопустимые символы подчёркиваниями. Проверьте вывод конвертера и при необходимости скорректируйте имена ключей в исходном JSON, если результирующий XML должен пройти XSD-валидацию.
Каков максимальный размер JSON, с которым справляется этот инструмент?
Конвертер работает в JavaScript-движке браузера, поэтому практический предел определяется доступной памятью. Большинство современных браузеров без проблем обрабатывают JSON-документы размером до 50–100 МБ. Для файлов большего размера используйте потоковый конвертер — например, xmltodict в Python или CLI-инструмент, который обрабатывает данные постепенно, не загружая всё в память сразу.
Является ли выходной XML правильно оформленным или валидным?
Выходной XML всегда является правильно оформленным: теги корректно вложены, специальные символы экранированы, документ имеет единственный корневой элемент. Является ли вывод валидным — зависит от целевой схемы (XSD или DTD). Правильная оформленность — это структурная гарантия; валидность требует, чтобы имена элементов, порядок вложенности и типы содержимого соответствовали конкретному определению схемы.