ToolDeck

YAML to JSON

Конвертація YAML у формат JSON

Спробувати приклад

Введення YAML

Виведення JSON

Працює локально · Безпечно вставляти секрети
JSON з'явиться тут…
Також спробуйте:YAML to XML

Що таке конвертація YAML у JSON?

Конвертація YAML у JSON перетворює дані, написані в YAML (YAML Ain't Markup Language), у формат JSON (JavaScript Object Notation). Обидва формати представляють структуровані дані у вигляді пар ключ-значення, послідовностей і вкладених об'єктів, але відрізняються синтаксисом. YAML використовує відступи та мінімальну пунктуацію, тоді як JSON — фігурні дужки, квадратні дужки та обов'язкові лапки. Конвертація між цими форматами є поширеним завданням при перенесенні конфігураційних даних між системами, що очікують різні формати.

YAML розроблений для зручності читання людиною. Він підтримує коментарі, багаторядкові рядки, якорі та псевдоніми — нічого з цього не існує у JSON. При конвертації YAML у JSON ці специфічні можливості YAML вирішуються: якорі розгортаються вбудовано, коментарі відкидаються, а багаторядкові блоки стають рядками з екранованими символами. Результат — валідний JSON, який може прочитати будь-який JSON-парсер.

Специфікація YAML 1.2 явно визначає JSON як підмножину YAML, тобто кожен валідний JSON-документ є також валідним YAML. Зворотне не є правдою. YAML-документи з коментарями, якорями або складними ключами не мають прямого еквівалента у JSON і мають бути спрощені під час конвертації. Цей інструмент виконує конвертацію автоматично, формуючи чистий, добре відформатований JSON з будь-якого валідного YAML-вхідного документа.

YAML 1.2 Specification — yaml.org →

Навіщо використовувати онлайн-конвертер YAML у JSON?

Конвертувати YAML у JSON вручну — схильно до помилок, особливо при глибоко вкладених структурах або багаторядкових значеннях. Браузерний конвертер дає результат миттєво і виявляє синтаксичні помилки YAML ще до того, як вони потраплять у застосунок.

Миттєва конвертація в браузері
Вставте YAML і отримайте відформатований JSON за мілісекунди. Жодних CLI-інструментів для встановлення, жодного кроку збірки, жодних залежностей для керування.
🔀
Підтримка будь-якої валідної YAML-структури
Підтримує вкладені відображення, послідовності, багаторядкові рядки (літеральні та складені блоки), якорі, псевдоніми, ключі злиття та всі скалярні типи YAML 1.2.
🔒
Ваші дані залишаються приватними
Весь розбір виконується локально у вашому браузері за допомогою JavaScript. Ваш YAML-вміст ніколи не надсилається на сервер, що робить інструмент безпечним для конфігураційних файлів із обліковими даними або внутрішніми шляхами.
📋
Копіювання та налаштування формату виводу
Перемикайтеся між відступами у 2 та 4 пробіли. Скопіюйте JSON-результат у буфер обміну одним кліком для безпосереднього використання в коді, API-запитах або конфіг-файлах.

Сценарії використання YAML to JSON

Frontend-розробка
Конвертуйте YAML-конфігурації з системи дизайну або CMS у JSON для споживання JavaScript-бандлерами, REST API або бібліотеками i18n, що вимагають JSON-вхідних даних.
Backend-розробка
Перетворюйте application.yml Spring Boot або database.yml Rails у JSON для передачі в скрипти розгортання, API-шлюзи або сервіси, що приймають лише JSON-конфігурацію.
DevOps та CI/CD
Конвертуйте docker-compose.yml, робочі процеси GitHub Actions або маніфести Kubernetes у JSON для інструментів валідації, рушіїв політик на кшталт OPA або налагодження за допомогою jq.
QA та тестування
Перетворюйте YAML-фікстури тестів у JSON-навантаження для інструментів тестування API на кшталт Postman, Insomnia або автоматизованих тестових наборів, що очікують тіла JSON-запитів.
Інженерія даних
Конвертуйте YAML-визначення пайплайнів (Airflow, dbt, Dagster) у JSON для валідації схеми, програмного маніпулювання або інтеграції з каталогами метаданих.
Навчання та документація
Швидко перегляньте, як структури YAML відображаються у їх JSON-еквіваленти, вивчаючи формати конфігурації або пишучи документацію.

Довідник відображення типів YAML у JSON

Кожен тип даних YAML відображається у конкретний тип JSON під час конвертації. Таблиця нижче показує кожну YAML-конструкцію поруч із її JSON-виводом. Розуміння цих відображень допомагає передбачити, як виглядатимуть ваші YAML-дані після конвертації, та уникнути несподіванок із типами на кшталт булевих значень або null.

Тип YAMLСинтаксис YAMLВивід JSON
Mappingname: Alice{ "name": "Alice" }
Sequence- apple\n- banana["apple", "banana"]
Stringgreeting: hello world"hello world"
Integercount: 4242
Floatratio: 3.143.14
Booleanactive: truetrue
Nullvalue: nullnull
Multiline (|)bio: |\n Line one\n Line two"Line one\nLine two\n"
Folded (>)note: >\n A long\n paragraph"A long paragraph\n"
Anchor/Alias&default\n <<: *defaultResolved inline (no $ref)

Синтаксис YAML та JSON

YAML і JSON представляють однакову модель даних, але з різними синтаксичними правилами. Відмінності нижче пояснюють, чому деякі можливості YAML — як-от коментарі та якорі — не мають еквівалента у JSON.

YAML
Використовує відступи для вкладеності (без фігурних дужок). Підтримує коментарі через #. Рядки зазвичай не потребують лапок. Дозволяє багаторядкові значення з блоковими скалярами | (літеральний) та > (складений). Підтримує якорі (&ім'я) та псевдоніми (*ім'я) для повторного використання. У YAML 1.2 лише true та false розпізнаються як булеві значення; старі парсери YAML 1.1 також приймали yes, no, on та off, але у YAML 1.2 вони трактуються як звичайні рядки.
JSON
Використовує фігурні та квадратні дужки для вкладеності. Немає синтаксису коментарів. Усі рядки мають бути у подвійних лапках. Жодних літералів багаторядкових рядків — використовуйте натомість послідовності екранування \n. Відсутній механізм якорів або псевдонімів. Булеві значення — строго рядки true та false у нижньому регістрі. Усі ключі мають бути рядками в лапках. Кінцеві коми є недійсними.

Приклади коду

Нижче наведено робочі приклади програмної конвертації YAML у JSON. Кожен приклад розбирає YAML-рядок і виводить відформатований JSON.

JavaScript (Node.js)
import { load } from 'js-yaml'

const yamlStr = `
server:
  host: localhost
  port: 8080
  ssl: true
`

const json = JSON.stringify(load(yamlStr), null, 2)
console.log(json)
// → {
// →   "server": {
// →     "host": "localhost",
// →     "port": 8080,
// →     "ssl": true
// →   }
// → }
Python
import yaml, json

yaml_str = """
database:
  host: db.example.com
  port: 5432
  credentials:
    user: admin
    password: s3cret
"""

data = yaml.safe_load(yaml_str)
print(json.dumps(data, indent=2))
# → {
# →   "database": {
# →     "host": "db.example.com",
# →     "port": 5432,
# →     "credentials": {
# →       "user": "admin",
# →       "password": "s3cret"
# →     }
# →   }
# → }
Go
package main

import (
	"encoding/json"
	"fmt"
	"log"
	"gopkg.in/yaml.v3"
)

func main() {
	yamlData := []byte(`
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
`)

	var obj map[string]interface{}
	if err := yaml.Unmarshal(yamlData, &obj); err != nil {
		log.Fatal(err)
	}
	jsonBytes, _ := json.MarshalIndent(obj, "", "  ")
	fmt.Println(string(jsonBytes))
	// → { "services": { "web": { "image": "nginx:latest", "ports": ["80:80"] } } }
}
CLI (yq + jq)
# Convert a YAML file to JSON with yq
yq -o=json config.yaml > config.json

# Pipe YAML into yq for one-off conversion
echo "name: demo" | yq -o=json
# → { "name": "demo" }

# Python one-liner (no extra install on most systems)
python3 -c "import yaml, json, sys; print(json.dumps(yaml.safe_load(sys.stdin), indent=2))" < config.yaml

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

Чи є YAML надмножиною JSON?
Так, починаючи з YAML 1.2 (опублікованого у 2009 році). Кожен валідний JSON-документ є також валідним YAML. Специфікацію YAML було навмисно оновлено для забезпечення повної сумісності з JSON. Однак зворотне не є правдою — можливості YAML на кшталт коментарів, якорів і ключів без лапок не мають еквівалента у JSON.
Що відбувається з коментарями YAML під час конвертації?
Коментарі відкидаються. JSON не має синтаксису коментарів, тому будь-які рядки, що починаються з # у вашому YAML-вході, втрачаються під час конвертації. Якщо вам потрібно зберегти коментарі, зберігайте оригінальний YAML-файл як першоджерело і генеруйте JSON з нього при необхідності.
Як обробляються якорі та псевдоніми YAML?
Якорі (&ім'я) та псевдоніми (*ім'я) вирішуються під час розбору. Псевдонім замінюється повною копією даних з якоря. Отриманий JSON не містить посилань — усі значення розгорнуті вбудовано. Ключі злиття (<<: *ім'я) вирішуються так само.
Чи може конвертація YAML у JSON призвести до втрати даних?
Для значень даних — ні. Усі скалярні типи YAML (рядки, числа, булеві значення, null) мають прямі еквіваленти у JSON. Що втрачається: коментарі, директиви тегів, імена якорів і відмінність між блоковим і потоковим стилем. Якщо ваш YAML покладається на власні теги (!!python/object, !!timestamp), вони вирішуються у прості значення або можуть спричинити помилку розбору залежно від парсера.
Чому булеве значення YAML 'yes' стає рядком у JSON?
Цей інструмент використовує js-yaml v4, що дотримується правил булевого вирішення YAML 1.2. Лише true та false (у будь-якому регістрі) розпізнаються як булеві значення. Значення на кшталт yes, no, on та off трактуються як звичайні рядки і з'являються як рядки в лапках у JSON-виводі. Якщо ви бачите несподівані рядкові значення замість булевих, замініть їх на true або false у вашому YAML-джерелі.
Який максимальний розмір YAML-файлу може обробити цей інструмент?
Інструмент працює у вашому браузері, тому обмеження залежить від доступної пам'яті вашого пристрою. На практиці файли до кількох мегабайт конвертуються без проблем. Для дуже великих файлів (50 МБ+) CLI-інструмент на кшталт yq або Python-скрипт із PyYAML буде надійнішим, оскільки вони можуть обробляти дані як потік замість завантаження всього в пам'ять одразу.
Як багаторядкові рядки YAML конвертуються у JSON?
YAML має два стилі багаторядкових блокових скалярів. Літеральні блоки (|) зберігають переноси рядків як символи \n у рядку JSON. Складені блоки (>) замінюють одинарні переноси рядків пробілами, перетворюючи кілька рядків на один абзац. Обидва стилі за замовчуванням додають кінцевий перенос рядка, який можна прибрати за допомогою індикатора обрізки (|- або >-).

Схожі інструменти