От XML к JSON

XML и JSON моделируют данные по-разному: в XML есть атрибуты и смешанное содержимое, в JSON, объекты и массивы. Для преобразования без потерь нужно соглашение. Этот инструмент предлагает три: компактный (удаляет атрибуты), Badgerfish (атрибуты, под @key, текст, под $) и литеральный (каждый узел XML становится объектом JSON с полной точностью). Выберите тот, который подходит для вашего потребителя JSON.

Как преобразовать XML в JSON

  1. 1

    Вставьте XML

    Любой корректно сформированный XML. Пространства имён сохраняются.

  2. 2

    Выберите стиль преобразования

    Компактный, Badgerfish или литеральный (без потерь).

  3. 3

    Обработка массивов

    Заставьте определённые элементы всегда быть массивами (настраивается).

  4. 4

    Скопируйте вывод JSON

    С отступами или минифицированный, на ваш выбор.

Сравнение трёх стилей

Ввод:

<book id="1" lang="en">
  <title>1984</title>
  <author>Orwell</author>
</book>

Компактный (удаляет атрибуты):

{
  "book": {
    "title": "1984",
    "author": "Orwell"
  }
}

Badgerfish (атрибуты, под @, текст, под $):

{
  "book": {
    "@id": "1",
    "@lang": "en",
    "title": { "$": "1984" },
    "author": { "$": "Orwell" }
  }
}

Литеральный / похожий на JsonML (с полной точностью):

{
  "book": {
    "@attributes": { "id": "1", "lang": "en" },
    "title": "1984",
    "author": "Orwell"
  }
}

Принудительные массивы

В XML нет способа сказать «это список из одного элемента». Последовательность из одного элемента выглядит точно так же, как скаляр:

<items>
  <item>A</item>
</items>

Это может быть сериализовано как {"item": "A"} или как {"item": ["A"]}. Конвертер позволяет помечать имена элементов (через XPath) как всегда-массивы, чтобы ваш нижестоящий потребитель JSON получал согласованные типы.

Смешанное содержимое

Смешанное содержимое, текст, переплетённый с дочерними элементами, это единственное место, где любое преобразование XML в JSON теряет информацию:

<p>Hello <em>world</em>!</p>

Большинство стилей либо удаляют текст, либо схлопывают его. Литеральный стиль сохраняет порядок с помощью массива:

{
  "p": {
    "@content": ["Hello ", { "em": "world" }, "!"]
  }
}

Вывод типов

По умолчанию значения являются строками. Включите опцию «разбор чисел/булевых значений», и конвертер приведёт 42, 3.14, true и false к соответствующим типам JSON. Будьте внимательны: при включённом приведении типов атрибут XML id="007" станет 7, чего вы, скорее всего, не хотите.

Когда что выбирать

  • Компактный: для читаемого человеком JSON, где атрибуты, это шум.
  • Badgerfish: когда вам нужны атрибуты и текст на той же глубине, что и дочерние элементы.
  • Литеральный: когда нужно без потерь преобразовывать обратно в XML.

Часто задаваемые вопросы

Если элемент встречается один раз, конвертер по умолчанию делает его объектом; если два раза или больше, массивом. Используйте опцию принудительного массива, чтобы сделать вывод единообразным, если ваш потребитель ожидает одну форму.

Префиксы пространств имён сохраняются в ключах (ns:title), если только вы не включите опцию «удалить пространства имён». Сами объявления превращаются в атрибуты @xmlns:ns на корневом элементе.

Литеральный режим ближе всего к преобразованию без потерь, однако порядок смешанного содержимого между элементами и текстом передать непросто. Компактный режим неизбежно теряет атрибуты. Badgerfish, это прагматичная золотая середина.

Нет. Преобразование выполняется в вашем браузере.

Сопутствующие инструменты

Справочная таблица ASCII

Полная таблица ASCII от 0 до 127 с десятичным, шестнадцатеричным, восьмеричным и двоичным представлением, а также записью числовых ссылок HTML, включая NUL, LF и DEL.

Смешивание цветов

Смешайте два HEX-цвета в 2-20 равномерных образцов. Каждый промежуточный цвет показывается как HEX-код в верхнем регистре, включая оба края.

Счетчик FPS

Измерьте FPS браузера через requestAnimationFrame: сглаживание, минимальная и максимальная частота кадров, порог предупреждения и график по желанию. Работает локально, без загрузок и API.

Генератор случайных букв

Генерируйте случайные буквы A-Z. Выберите количество, верхний или нижний регистр либо смешанный вариант для игр, заданий и уроков.

Справочник символов HTML

Справочник HTML-сущностей с поиском, их именованными и числовыми кодами, а также копированием специальных символов и знаков одним кликом.

Справочник сочетаний клавиш

Ищите документированные сочетания по умолчанию для VS Code, Chrome и Bash с GNU Readline в macOS, Windows и Linux.

Инструмент доступен на других языках