Перейти к содержимому

Конвертер YAML в JSON

Превратите YAML-конфиг в строгий JSON с точными числами и понятными ошибками.

Результат
Настройки
Работает в браузере: данные никуда не загружаются.

Как пользоваться

  1. Вставьте YAML в редактор ввода.
  2. В настройке «Результат» выберите «Отступ 2», «Отступ 4» или «Минифицировать».
  3. Проверьте JSON в редакторе результата: он обновляется автоматически, пока вы редактируете YAML. Если ввод больше 1 048 576 символов, нажмите «Конвертировать» или Ctrl+Enter.

Примеры

Общие настройки сервисов через якорь

Исходные данные
defaults: &defaults
  restart: unless-stopped
  environment:
    TZ: Europe/Moscow
services:
  katalog:
    <<: *defaults
    image: registry.example.ru/katalog:1.4
  poisk:
    <<: *defaults
    image: registry.example.ru/poisk:2.1
    restart: on-failure
Результат
{
  "defaults": {
    "restart": "unless-stopped",
    "environment": {
      "TZ": "Europe/Moscow"
    }
  },
  "services": {
    "katalog": {
      "restart": "unless-stopped",
      "environment": {
        "TZ": "Europe/Moscow"
      },
      "image": "registry.example.ru/katalog:1.4"
    },
    "poisk": {
      "environment": {
        "TZ": "Europe/Moscow"
      },
      "image": "registry.example.ru/poisk:2.1",
      "restart": "on-failure"
    }
  }
}

Числовые коды ответов в OpenAPI

Исходные данные
openapi: 3.0.3
info:
  title: API каталога
  version: '1.0'
paths:
  /tovary:
    get:
      responses:
        200:
          description: Список товаров
        404:
          description: Товары не найдены
Результат
{
    "openapi": "3.0.3",
    "info": {
        "title": "API каталога",
        "version": "1.0"
    },
    "paths": {
        "/tovary": {
            "get": {
                "responses": {
                    "200": {
                        "description": "Список товаров"
                    },
                    "404": {
                        "description": "Товары не найдены"
                    }
                }
            }
        }
    }
}

Два документа Kubernetes в одном файле

Исходные данные
apiVersion: v1
kind: Namespace
metadata:
  name: katalog
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: katalog-settings
  namespace: katalog
data:
  CITY: Казань
  LOG_LEVEL: info
Результат
[{"apiVersion":"v1","kind":"Namespace","metadata":{"name":"katalog"}},{"apiVersion":"v1","kind":"ConfigMap","metadata":{"name":"katalog-settings","namespace":"katalog"},"data":{"CITY":"Казань","LOG_LEVEL":"info"}}]

Как типы YAML превращаются в JSON

YAMLJSONПримечание
name: Alice, "02134"строкаЧисла в кавычках остаются строками.
30, 1.10, 0x1F, 12345678901234567890числоЗаписываются точно как в YAML; шестнадцатеричные и восьмеричные становятся десятичными.
true, Falseлогическое значениеyes, no, on остаются строками (YAML 1.2).
null, ~, пустое значениеnull
2001-12-14, 12:30:00строкаНикакого скрытого преобразования в метки времени.
списки, словари, якоря, ключи слияния <<массив, объектАлиасы раскрываются; порядок ключей сохраняется.
.inf, .nan, !!binary, !Ref, список в качестве ключа—Ошибка с путём и номером строки, а не молчаливое изменение.

Частые вопросы

Почему yes и on не превращаются в true?

По умолчанию используются правила YAML 1.2: yes, no, on и off остаются строками. Если документ содержит директиву %YAML 1.1, применяются правила YAML 1.1, и конвертер показывает примечание.

Сохраняется ли точность больших чисел?

Конвертер записывает числа без округления: например, 12345678901234567890, 1.10 и 1e3 сохраняются в исходном виде. Шестнадцатеричные и восьмеричные числа переводятся в десятичные.

Почему YAML не конвертируется в JSON?

Причиной могут быть ошибки синтаксиса, повторяющиеся ключи, пользовательские теги вроде !Ref или значения .inf и .nan, которых нет в JSON. Сообщение указывает строку и столбец; для ошибок преобразования также указан путь в данных.

Отправляется ли YAML на сервер?

Конвертация выполняется в вашем браузере, код инструмента не отправляет YAML или JSON на сервер. Ввод не сохраняется; сохраняются только настройки, а при переходе в связанный инструмент данные временно передаются через sessionStorage.