← Усі інструменти

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

Конвертуйте JSON у XML і назад миттєво у браузері. Локально та конфіденційно — з поясненням атрибутів, масивів, просторів імен та підводних каменів.

JSON у XML і назад: практичний конвертер для двох світів даних

Більшість розробників так чи інакше працюють і з XML, і з JSON. Сучасні веб-API говорять майже виключно на JSON, але щойно ви торкаєтеся банку, страховика, державного ендпоінта, корпоративного ERP або старого SOAP-сервісу — XML з'являється знову. Конвертер JSON у XML на цій сторінці перетворює JSON на XML та XML назад у JSON прямо у вашому браузері, щоб ви могли переміщатися між цими двома форматами, не копіюючи чутливі пейлоади у сторонній сервіс.

Яскраві вкладені JSON-дужки, що перетворюються на дерево XML-тегів у кутових дужках на темно-індиговому тлі
Об'єкти JSON та дерева XML-тегів описують ті самі дані різними формами.

Що таке XML та JSON насправді

XML (Extensible Markup Language) — формат розмітки, побудований навколо вкладених тегів, атрибутів та просторів імен. Він розроблявся для документів та обміну структурованими даними і несе в собі багато механізмів: схеми (XSD), простори імен, інструкції обробки, коментарі, секції CDATA та формальну декларацію на початку. Саме ця потужність пояснює, чому XML досі панує в застарілих та корпоративних системах. Ви зустрінете його у SOAP-вебсервісах, RSS та Atom-фідах, конфігураційних файлах (Spring, Maven, .NET app configs), форматах офісних документів та стандартах фінансових повідомлень на зразок SWIFT та ISO 20022, де банки та страховики досі щодня обмінюються XML.

JSON (JavaScript Object Notation) значно простіший: об'єкти з парами ключ/значення, масиви, рядки, числа, булеві значення та null. Він відображається майже один до одного на структури даних практично кожної мови програмування — саме тому захопив сучасні веб-API, REST-ендпоінти, мобільні застосунки та конфігураційні файли на зразок package.json. JSON зазвичай на 30–50% менший за еквівалентний XML і парситься помітно швидше, частково бо позбавляється закривальних тегів і атрибутного механізму, що робить XML багатослівним.

Ключові відмінності, що важливі для конвертації

Два формати перетинаються достатньо для взаємного відображення, але не чисто. Кілька структурних відмінностей породжують майже всі труднощі:

  • Атрибути проти дочірніх вузлів. XML розрізняє <user id="1"> (атрибут) та <user><id>1</id></user> (дочірній елемент). В JSON такого поняття немає, тому конвертери вигадують рішення. За угодою атрибути складаються в ключ на кшталт @attributes або префіксуються символом @, а текст елемента потрапляє в ключ типу #text.
  • Масиви. У JSON є нативні масиви. У XML — ні. Список в XML — це просто однаковий тег, що повторюється: наприклад три елементи <item> підряд. Конвертери мають визначати, коли повторювані сусідні теги слід згорнути в JSON-масив, а коли одиничний елемент має залишатися звичайним об'єктом.
  • Простори імен. XML використовує простори імен (префікси xmlns:soap), щоб уникнути конфліктів імен між схемами. У JSON немає нічого еквівалентного, тому префікси або зберігаються як буквальні символи в ключах, або видаляються.
  • Багатослівність та метадані. XML може прикріплювати метадані до вузла через атрибути; JSON виражає все через ключі та значення. Це робить JSON компактнішим і читабельнішим, а XML зберігає потужність валідації через XSD-схеми.

Підводні камені конвертації

Перетворення JSON у XML, потім назад у JSON в очікуванні ідентичного результату — класична помилка. Конвертація є частково незворотною в обох напрямках, якщо ви не контролюєте правила. Майте на увазі:

  • Атрибути спотворюються. При конвертації JSON у XML інструменту потрібне правило: які ключі стають атрибутами, а які елементами. При зворотному перетворенні атрибути мають кудись потрапити, і це «кудись» (префікс @, блок @attributes) відрізняється між бібліотеками. Якщо парсер нижче за потоком очікує іншої угоди — дані виглядатимуть неправильно, хоча нічого не втрачено.
  • Одиничний елемент проти масиву. XML-фід з одним <item> дає JSON-об'єкт; той самий фід із двома елементами дає JSON-масив. Код, що припускає масив, ламається на одиничному випадку. Це поширене джерело помилок парсингу RSS та SOAP.
  • Простори імен витікають або зникають. Залежно від інструменту soap:Body може стати ключем, буквально названим soap:Body, або префікс може бути видалений повністю, змінюючи зміст документа.
  • Мішаний вміст і типи. XML трактує все як текст, тому значення на зразок true або 42 може залишитися рядком після конвертації у JSON, а у зворотному напрямку немає нативного місця для коментарів або CDATA.
Два дерева структурованих даних, з'єднані абстрактними вузлами розмітки з блакитного та золотого світла
Відображення між форматами означає вирішення питання, як перетворити атрибути, масиви та простори імен.

Чому важлива виключно локальна конвертація

JSON та XML пейлоади — часто найчутливіше, з чим має справу розробник: API-відповіді з токенами, SOAP-повідомлення з номерами рахунків, конфігураційні файли з обліковими даними. Конвертер, що працює у вашому браузері, ніколи нічого з цього не завантажує. Парсинг та серіалізація відбуваються на вашій машині, нічого не надсилається на сервер, і ви можете використовувати інструмент офлайн після завантаження сторінки. Для відлагодження виробничих даних або будь-чого, що підпадає під вимоги відповідності, це різниця між безпечною швидкою перевіркою та випадковим витоком даних.

Якщо потрібно привести результат до ладу, поєднайте це з нашими іншими конвертерами даних, або відформатуйте вивід за допомогою форматувальника JSON перед передачею наступному інструменту в пайплайні.

Часті запитання

Чи завантажує конвертер мій JSON або XML кудись?

Ні. Конвертація JSON у XML та XML у JSON виконується повністю у вашому браузері. Ваші дані ніколи не покидають пристрій, а інструмент працює офлайн після завантаження сторінки.

Як обробляються XML-атрибути при конвертації у JSON?

XML-атрибути поміщаються у виділений ключ — зазвичай із префіксом у вигляді символу «@» або згрупованим в блок атрибутів, оскільки в JSON немає нативного поняття атрибутів. Текстовий вміст елемента зберігається окремо, тому обидва виживають при конвертації.

Чому мій одиничний XML-елемент став об'єктом замість масиву?

У XML немає нативних масивів, тому список — це просто тег, що повторюється. Коли присутній лише один елемент, конвертери не можуть відрізнити його від звичайного об'єкта — тому він стає об'єктом. Два або більше сусідніх теги з однаковим ім'ям згортаються у JSON-масив.

Що трапляється з XML-просторами імен на зразок soap або xmlns?

У JSON немає еквівалента XML-просторів імен. Залежно від конвертації, префікс зберігається як буквальний текст всередині ключа або видаляється. Перевіряйте вивід, якщо ваш споживач нижче за потоком покладається на префікси просторів імен.

Чи можна конвертувати JSON назад у XML та отримати оригінальний документ?

Не завжди точно. Конвертація є частково незворотною в обох напрямках, бо такі можливості XML, як коментарі, CDATA та розрізнення атрибутів і елементів, не мають чистого відповідника в JSON. Туди-назад найкраще спрацьовує, коли ви контролюєте правила іменування з обох сторін.

Де XML все ще використовується на відміну від JSON?

XML живе у застарілих і корпоративних системах: SOAP-вебсервісах, RSS та Atom-фідах, конфігураційних файлах та фінансових повідомленнях на зразок SWIFT та ISO 20022. JSON панує в сучасних веб-API, REST-ендпоінтах та мобільних застосунках.