XML ⇄ JSON конвертер

Двостороння конвертація XML ↔ JSON з обробкою атрибутів, збереженням CDATA, BOM, закінченням рядків та керуванням відступами

Введення

Розширені налаштування

Вивід

XML ⇄ JSON конвертер

Двостороння конвертація XML ↔ JSON з обробкою атрибутів, збереженням CDATA, BOM, закінченням рядків та керуванням відступами

Можливості

  • Режим автовизначення розпізнає, чи вставлений текст є XML або JSON, і запускає конвертацію в зворотному напрямку — вставляйте будь-яку сторону без ручної зміни режиму
  • Дві стратегії атрибутів: режим «Префікс» видає атрибути XML із налаштованим префіксом (за замовчуванням `@`) як суміжні ключі JSON; режим «Обʼєкт» збирає їх в окремому обʼєкті `$`, тож текст елемента та атрибути ніколи не зіштовхуються
  • Обробка CDATA та текстових вузлів: при увімкненому «Обробити CDATA/Текст як #text» текстовий вміст елемента згортається у властивість `#text`; змішаний вміст переживає round-trip; вимкнено зберігає структурне розрізнення
  • Перемикач pretty-print з вибраним відступом (2 / 4 / 8 пробілів) для JSON- та XML-виводу — увімкнено для людського читання, вимкнено для компактної передачі
  • Контроль закінчення рядків (LF vs CRLF) для сумісності Unix vs Windows, плюс необовʼязковий перемикач UTF-8 BOM для систем, що потребують позначки порядку байтів
  • Налаштовуваний префікс атрибутів відповідає конвенціям нижче за потоком: `@` (за замовчуванням), `_`, `xml:` або інший рядок — тримає конвертований вивід drop-in сумісним із вашим конвеєром
  • «Копіювати» та «Завантажити» (`converted.txt`) одним кліком для виводу; помилки конвертації виходять інлайн із повідомленням базового парсера — ви знаєте, чи був XML некоректним, чи JSON непредставимим як XML
  • Повністю на стороні клієнта: розбір через вбудований DOMParser для XML і JSON.parse для JSON. Без мережевих викликів, працює офлайн після кешування сторінки

Як використовувати

  1. Вставте свій XML або JSON у панель «Введення». При режимі «Автовизначення» конвертер визначає формат автоматично.
  2. Налаштуйте перемикач Pretty та розмір відступу для керування форматуванням; перемикайте Закінчення рядка між LF та CRLF, як того вимагають ваші інструменти нижче за потоком.
  3. Відкрийте «Розширені налаштування», щоб вибрати Режим атрибутів («Префікс» або «Обʼєкт»), задати Префікс атрибутів та перемкнути CDATA/Текст-#text.
  4. Клацніть «Конвертувати». Панель «Вивід» показує результат; конвертація працює у вашому браузері через DOMParser + JSON.parse.
  5. Використайте «Копіювати» для буфера обміну або «Завантажити», щоб зберегти як `converted.txt`.
  6. Якщо розбір не вдався, інлайн-рядок помилки показує базове повідомлення — виправте введення та сконвертуйте знову.

Поради та найкращі практики

  • При налагодженні XML-навантаження з SOAP-сервісу автовизначення + режим атрибутів «Обʼєкт» + CDATA-#text дають найчистіший вид JSON.
  • Встановіть Закінчення рядка на CRLF та активуйте BOM при генерації виводу, призначеного для застарілих інструментів Windows.
  • Змініть Префікс атрибутів з `@` на `_`, якщо ваші споживачі JSON відхиляють ключі, що починаються з `@` (деякі парсери на основі YAML так роблять).
  • Якщо JSON-у-XML вивід ставить елементи в неправильному порядку, перевставте свої ключі верхнього рівня в джерельний JSON у потрібній послідовності.
  • Поєднуйте з JSON Formatter, коли хочете далі перевіряти або трансформувати конвертований JSON; XML Formatter на боці XML.

Запитання та відповіді

Як Режим атрибутів змінює JSON-вивід?

У режимі «Префікс» атрибути XML зʼявляються як суміжні ключі з налаштованим префіксом — `<user id="42"/>` стає `{ "user": { "@id": "42" } }`. У режимі «Обʼєкт» атрибути збираються під одним ключем `$`, тож вміст елемента й атрибутів не ділять простір імен. Виберіть «Префікс», коли споживачі очікують плоских ключів; «Обʼєкт», коли потрібно однозначно повернути атрибути до XML.

Для чого CDATA-як-#text?

XML має два способи нести текст — `<a>plain</a>` та `<a><![CDATA[plain]]></a>`. З увімкненою опцією обидві форми згортаються в ключ `#text` у JSON; змішаний вміст на кшталт `<p>Привіт <b>світ</b></p>` переживає round-trip. Вимкнено зберігає структурне розрізнення; корисно, коли оригінальні маркери CDATA семантично значущі (наприклад, вбудовані скрипти).

Чому перемикач BOM має значення?

Деякі інструменти Windows (Excel, старий PowerShell, .NET TextReader без явного кодування) очікують UTF-8 BOM (`EF BB BF`) на початку файлу для визначення кодування. Сучасні веб-інструменти та Unix-конвеєри зазвичай вважають BOM шумом. Увімкніть перемикач для BOM-чутливих інструментів Windows, вимкніть для всього іншого.

Чому LF проти CRLF?

Інструменти Windows та старі формати Microsoft очікують `\r\n` (CRLF); Unix/Linux/macOS за замовчуванням використовують `\n` (LF). Git зазвичай нормалізує обидва, але артефакти, що обходять git (завантаження, вставки в Блокнот, виводи збірки), потребують явного вибору. Парсер автовизначення ігнорує закінчення рядків; цей контроль впливає лише на вивід.

Чи переживають простори імен конвертацію?

Імена елементів та атрибутів з префіксами просторів імен виживають як літеральні рядки (наприклад, `xmlns:soap` стає ключем `@xmlns:soap`). Конвертер не розвʼязує простори імен проти URI — якщо ваш конвеєр нижче за потоком потребує розвʼязання, робіть цей крок окремо. Round-trip назад до XML зберігає початкові префікси.

Що відбувається з порожніми елементами?

Порожній XML-елемент `<a/>` стає `{ "a": null }` у JSON (або `{ "a": "" }`, якщо це був `<a></a>` із порожнім текстом і CDATA-#text увімкнено). Йдучи з JSON до XML, значення `null` видає самозамкнений елемент. Round-trip стабільний, доки ви не перемикаєте налаштування CDATA-#text між напрямками.

Чому мій JSON-у-XML вивід має впорядковані ключі?

XML-елементи мають визначений порядок; JavaScript-обʼєкти зберігають порядок вставлення для рядкових ключів, тому конвертер пише елементи в порядку, в якому їхні ключі зʼявилися в JSON. Якщо JSON прийшов із round-trip JSON.parse, порядок відповідає джерелу; побудовано програмно — контролюйте порядок, вставляючи ключі в бажаній послідовності.

Чи безпечно конвертувати великі документи в цій вкладці?

Документи середнього мегабайтного розміру конвертуються значно менш ніж за секунду. Дуже великі (>10 МБ) працюють, але закріплюють UI-потік під час розбору; для такого навантаження виконуйте ту ж логіку в Web Worker або скрипті часу збірки. Сервіс конвертації однаковий в обох контекстах.