Конвертация JSON to YAML

Рейтинг: 0Ответов: 1Опубликовано: 19.01.2023

Мне нужно конвертировать json файл в yaml, но не включая в начало строки тире и заключить заголовок блока в квадратные скобки. Вот так

[Debian 11]
k8s-023.123.test.ru
k8s-024.123.test.ru
k8s-025.123.test.ru

Однако при просто конвертировании я получаю такой вывод.

Debian 11:
- k8s-023.123.test.ru
- k8s-024.123.test.ru
- k8s-025.123.test.ru

Ответы

▲ 1Принят

Я бы посоветовал библиотеку js-yaml:

  • Установить библиотеку js-yaml с помощью npm: npm install js-yaml

  • Подключить библиотеку в коде: const yaml = require('js-yaml');

  • Преобразуй json файл в yaml формат таким образом:

    const json = { Debian: 11, servers: ['k8s-023.123.test.ru', 'k8s-024.123.test.ru', 'k8s-025.123.test.ru'] } const yamlString = yaml.safeDump(json, { lineWidth: -1 }); console.log(yamlString);

Что должно отобразиться консоли:

Debian: 11 servers:

  • k8s-023.123.test.ru
  • k8s-024.123.test.ru
  • k8s-025.123.test.ru

Чтобы получить заголовок блока в квадратных скобках и не включая в начало строки тире - опция noCompatMode: true.

const yamlString = yaml.safeDump(json, { lineWidth: -1, noCompatMode: true });

Есть ещё такой вариант:

yamlString = yamlString.replace(/^-/gm, '');
yamlString = yamlString.replace(/(\w+):/g, '[$1]');
console.log(yamlString)

Посмотри, что из этого сработает