YAML ⇄ JSON
Конвертувати YAML у JSON і навпаки
Дані надсилаються на сервер, але не зберігаються
Цей інструмент не можна виконати у браузері, тому введені дані надсилаються на наш сервер. Ми обробляємо їх у пам'яті та одразу повертаємо результат: нічого не записується в базу, у файли чи в логи, нічого не передається третім сторонам. Та все ж не вставляйте сюди справжні робочі паролі чи ключі - для чутливих даних краще скористатися локальними інструментами.
YAML і JSON - те саме різними словами
Обидва формати описують ту саму структуру: словники, списки, рядки, числа. YAML читабельніший для людини і тому став мовою конфігів - docker-compose.yml, GitHub Actions, Kubernetes. JSON зручніший для машин і панує в API.
Конвертація потрібна постійно: перенести приклад із документації, порівняти два конфіги, згодувати YAML-структуру в інструмент, який розуміє лише JSON.
Чому цей інструмент працює на сервері
Написати надійний парсер YAML у браузері - це підключити чималу бібліотеку. Замість цього конвертація виконується тим самим Symfony YAML, який використовує сам Laravel, тож результат збігається з тим, як фреймворк прочитає ваш файл.
Особливості YAML, на яких спотикаються
Табуляція заборонена. Тільки пробіли. Це помилка номер один, і редактор її не завжди показує.
Норвезька проблема. У старому YAML 1.1 no, off, yes, on перетворювалися на булеві значення - тому код країни Норвегії NO ставав false. Symfony використовує YAML 1.2, де такого немає, але в інших парсерах пастка жива. Беріть значення в лапки, якщо це рядок.
country: NO # у YAML 1.1 це false
country: "NO" # завжди рядок
Провідний нуль. version: 010 у деяких парсерах читається як вісімкове число 8.
Багаторядкові рядки. | зберігає переноси, > схлопує їх у пробіли:
script: |
php artisan migrate
php artisan cache:clear
У PHP і Laravel
use Symfony\Component\Yaml\Yaml;
$config = Yaml::parse(file_get_contents('config.yml'));
$yaml = Yaml::dump($array, inline: 4, indent: 2);
Symfony YAML вже є у кожному Laravel-проєкті як транзитивна залежність, тому окремо ставити нічого не треба.
// Читання з обробкою помилки - інакше кинутий виняток покладе команду
use Symfony\Component\Yaml\Exception\ParseException;
try {
$config = Yaml::parseFile($path);
} catch (ParseException $e) {
$this->error("Некоректний YAML: {$e->getMessage()}");
}
Сам Laravel конфіги в YAML не використовує - у нього PHP-масиви в config/, які кешуються в один файл. YAML у проєкті зазвичай означає CI, Docker або зовнішній сервіс.
- Де виконується
- на сервері
- Категорія
- Дані та формати