UltKit
Зображення11
PDF13
Документи й дані7
Відео6
Аудіо4
Інші інструменти22

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

Перепишіть JSON у YAML, який зручно читати, перевіряти й коментувати. Завантажте файли .json і отримайте .yaml з відступами, тими самими ключами, значеннями та порядком, готовий до додавання в репозиторій.

Конвертер даних

або перетягніть Файли CSV, TSV, TXT … сюди ·

До 95 МБ на файл· До 20 файлів· Видаляються через 30 хв

Результат

Файли обробляються на наших серверах і видаляються через 30 хв.

Як користуватися цим інструментом

  1. 1

    Додайте файли JSON

    Завантажте відповіді API, експортовані налаштування або згенеровані маніфести у форматі .json: до 20 файлів, кожен до 95 MB. Кожен файл має містити одне коректне значення JSON.

  2. 2

    Залиште типові налаштування

    YAML уже вибрано в полі Конвертувати в. Для конфігураційного файлу більше нічого змінювати не потрібно; у результаті використовується відступ у два пробіли.

  3. 3

    Конвертуйте й закомітьте

    Натисніть Конвертувати в YAML, завантажте файли .yaml, додайте коментарі там, де вони знадобляться наступному читачеві, і закомітьте зміни.

Відповідь

Як конвертувати JSON у YAML?

Завантажте файл .json і натисніть Конвертувати в YAML. Об’єкти стають блоками key: value з відступами, масиви — списками з дефісами, а рядки, які YAML може прочитати неправильно, зберігають лапки.

Навіщо конвертувати JSON у YAML для конфігураційних файлів

Більшість JSON створює програмне забезпечення: відповідь API, експорт налаштувань, результат генератора. Більшість YAML підтримують люди. Конвертація зазвичай позначає момент, коли дані перестають бути машинним виводом і стають тим, чим володіє команда: маніфестом розгортання в Git, конвеєром CI або набором змінних Ansible.

Типовий випадок: ви викликаєте API хмарного сервісу, отримуєте JSON-опис ресурсу на 200 рядків і хочете зберегти його як інфраструктуру у вигляді коду. Після конвертації файл без дужок і ком, де зміна одного рядка дає diff в один рядок, а дивні значення можна пояснити в коментарях. Те саме стосується тестових фікстур і файлів перекладів, які редагують не розробники. Якщо ж потрібна пласка таблиця, для електронної таблиці чи звіту, краще підійде JSON у CSV.

Інструменти з конфігураційними файлами у YAML

Де зазвичай використовують сконвертований YAML
ОрганізаціяВимогаДжерело
GitHub ActionsРобочі процеси лежать у .github/workflows як файли .yml або .yamlGitHub Docs
GitLab CI/CDКонвеєр описано у файлі .gitlab-ci.yml у корені репозиторіюGitLab Docs
Docker ComposeСервіси описано у compose.yaml (раніше docker-compose.yml)Docker Docs
AnsibleПлейбуки та файли змінних пишуть у YAMLAnsible Docs
KubernetesМаніфести приймають JSON або YAML; документація та чарти Helm використовують YAMLKubernetes

Приклад конвертації JSON у YAML зі складними значеннями

Результат YAML для {"name":"api","version":"1.10","debug":false,"tags":["web","eu"],"country":"NO"}
# "NO" у лапках: без них YAML 1.1 прочитає країну як false
name: api
version: "1.10"
debug: false
tags:
  - web
  - eu
country: "NO"

Що дає YAML

  • Коментарі з #
  • Коротші diff у код-рев’ю
  • Без дужок, ком і лапок у більшості рядків
  • Багаторядковий текст через блокові скаляри |

На що звернути увагу

  • Відступ несе зміст, тож зайвий пробіл змінює структуру
  • Табуляція для відступів не допускається
  • Рядки без лапок можуть бути прочитані як числа чи булеві значення
  • Парсери повільніші й менш одноманітні, ніж для JSON

Приклад показує, чому простої заміни дужок недостатньо. Версія 1.10 у JSON — рядок; записана в YAML без лапок, вона буде прочитана як число 1.1. NO, код ISO для Норвегії, парсери YAML 1.1, як-от PyYAML, прочитають як false. Обидва значення зберігають лапки, а справжні числа й булеві значення лишаються без них.

Порівняння JSON і YAML

JSON

JavaScript Object Notation

JSON — легкий текстовий формат для структурованих даних, який на початку 2000-х популяризував Дуглас Крокфорд і який стандартизовано як RFC 8259 та ECMA-404. Він передає об’єкти, масиви, рядки, числа, булеві значення та null простим читабельним синтаксисом. Це формат за замовчуванням для вебAPI, конфігураційних файлів і обміну даними між застосунками майже в усіх мовах програмування. У ньому немає вбудованих коментарів, дат і схем, а великі вкладені файли важко читати без переглядача.

Стиснення
–
Прозорість
–
Анімація
–
Рік появи
2001 · Douglas Crockford
Конвертер JSON

YAML

YAML

YAML («YAML Ain't Markup Language») — зручний для людини формат даних, уперше випущений у 2001 році. Він використовує відступи замість дужок, підтримує коментарі та є надмножиною JSON. Його широко застосовують для конфігурації в Docker Compose, Kubernetes, GitHub Actions і багатьох програмах. Через залежність від пробілів його легко зламати одним зайвим пробілом, а деякі значення, наприклад «no» або дати, можуть інтерпретуватися несподівано.

Стиснення
–
Прозорість
–
Анімація
–
Рік появи
2001 · Clark Evans, Ingy döt Net, Oren Ben-Kiki
Конвертер YAML

JSON конвертують у YAML, коли згенеровані дані або дані з API мають стати конфігураційним файлом, який підтримують люди, перевіряють у pull request і супроводжують коментарями.

Запитання про конвертер JSON у YAML

Чи є JSON уже коректним YAML?

У YAML 1.2 так: редакцію 2009 року написано так, що кожен документ JSON є також документом YAML. Можна вставити JSON у файл .yaml, і більшість інструментів його прийме. Конвертація потрібна для читабельності: блоковий стиль без дужок, лапок і ком — це те, чого очікують рецензенти та наступний мейнтейнер.

Чому деякі значення в YAML взято в лапки?

Бо без лапок YAML прочитає їх як інший тип. Рядок версії на кшталт 1.10 стане числом 1.1, а yes чи off у старіших парсерах можуть стати булевими значеннями. Рядки, схожі на числа, дати чи булеві значення, потребують лапок, щоб лишитися рядками, тому коректна конвертація їх зберігає.

Чи можна додати коментарі після конвертації?

Так, і це поширена причина конвертувати. Напишіть # і примітку в кінці рядка або в окремому рядку. У JSON не було способу пояснити, чому значення саме таке; у YAML він є, що полегшує рев’ю та передачу проєкту.

Чому YAML видає помилку через символ табуляції?

Специфікація YAML забороняє табуляцію для відступів; враховуються лише пробіли. Конвертер записує пробіли, але редактор, налаштований вставляти табуляцію, може зіпсувати файл під час наступного редагування. Налаштуйте редактор на пробіли для файлів .yaml.

Чи прийме Kubernetes сконвертований маніфест?

kubectl читає і JSON, і YAML, тож дані однакові в обох випадках; просто версію YAML використовують більшість документації, чартів Helm і код-рев’ю. Якщо згодом знадобиться JSON для jq або виклику API, YAML у JSON зробить зворотне перетворення.