Многие современные инструменты, особенно в области управления конфигурацией и кода инфраструктуры (IaC), используют файлы JSON или YAML для хранения конфигурационных данных. Если вам нужно преобразовать данные из формата YAML в JSON, то эта статья для вас.
В этой статье вы узнаете несколько способов преобразования данных из YAML в формат JSON, включая написание скриптов на Python, PowerShell и Go.
Предварительные требования
Если вы хотите следовать примерам в этом учебнике, убедитесь, что у вас есть
- A code editor. This article will use Visual Studio Code version 1.55.1. Feel free to use any code editor you want.
- Чтобы начать преобразование YAML в JSON, вам нужен образец YAML-содержимого. Скопируйте содержимое ниже в новый файл с именем operating-systems.yml. Сохраните файл YAML в вашем рабочем каталоге.
Использование Python для преобразования YAML в JSON
Python – отличный язык для автоматизации. Но знаете ли вы, что можно расширить возможности Python и использовать его для преобразования документов из YAML в JSON? И вам нужно выполнить всего несколько шагов, чтобы начать преобразование YAML в JSON в кратчайшие сроки.
Пример в этом разделе требует, чтобы у вас были установлены Python 3.9 и PIP (последняя версия на момент написания – 21.0.1).
Добавление поддержки YAML в Python
Python не имеет встроенной поддержки YAML. Это означает, что Python не может читать или интерпретировать YAML-документы по умолчанию. Чтобы добавить поддержку YAML в Python, сначала вам нужно установить модуль PyYAML.
Чтобы установить модуль PyYAML, вам нужно выполнить команду pip
, который является инструментом установки пакетов для Python. Для этого выполните следующие шаги.
Сначала откройте предпочитаемый интерпретатор команд, такой как командная строка или PowerShell. Команда pip
должна работать в любом из них. В этом примере используется PowerShell.
Затем выполните следующую команду в PowerShell. Эта команда устанавливает модуль PyYAML.
Как видно на скриншоте ниже, pip
установил последнюю версию PyYAML (5.4.1 на момент написания).

Написание скрипта преобразования
Теперь, когда вы установили необходимый модуль (PyYAML), вы готовы написать свой скрипт преобразования. Чтобы создать скрипт Python для преобразования YAML в JSON, выполните следующие шаги.
1. Откройте свой редактор кода и создайте новый файл с именем convert-os.py в вашем рабочем каталоге. Этот файл будет вашим скриптом.
2. Скопируйте код ниже и вставьте его в ваш пустой файл convert-os.py. Этот скрипт будет читать содержимое YAML-файла operating-systems.yml, преобразовывать его в формат JSON и записывать JSON-вывод в файл python_operating-systems.json.
3. Сохраните скрипт convert-os.py.
Запуск скрипта преобразования
После создания скрипта преобразования пришло время провести тестирование. Для выполнения скрипта Python преобразования YAML в JSON выполните следующие действия:
1. Откройте окно терминала. В этой статье используется PowerShell, но командная строка (CMD) также подойдет.
2. Скопируйте команду ниже, вставьте ее в PowerShell и нажмите Enter. Эта команда запускает исполняемую программу Python
, чтобы вызвать скрипт convert-os.py, который вы создали в предыдущем разделе.
После выполнения команды вы должны увидеть аналогичный вывод, как на изображении ниже. Как видите, команда отобразила вывод JSON на экране и сохраняет тот же вывод в файл c:\temp\python_operating-systems.json.

3. Наконец, откройте файл JSON под названием python_operating-systems.json, который должен был создать скрипт Python convert-os.py. В этом примере, чтобы открыть файл в блокноте, выполните следующую команду в PowerShell.

Использование PowerShell для преобразования YAML в JSON
PowerShell способен изменять текстовые файлы и преобразовывать объекты в несколько форматов, включая JSON. Поскольку PowerShell расширяем, вы можете использовать PowerShell для преобразования YAML в формат JSON с правильным модулем.
Добавление поддержки YAML в PowerShell
PowerShell имеет встроенную поддержку для обработки содержимого JSON, но не для YAML. К счастью, существует модуль, который расширяет PowerShell для поддержки файлов YAML. Этот модуль называется PowerShell-yaml, и последняя версия на момент написания это 0.4.2. Следуйте этим шагам, чтобы установить модуль.
1. На вашем компьютере откройте сеанс PowerShell.
2. Скопируйте указанную команду, вставьте ее в PowerShell и нажмите Enter. Эта команда использует cmdlet Install-Module
для установки модуля PowerShell-yaml.
3. После установки модуля в PowerShell станут доступны две новые cmdlet в рамках модуля PowerShell-yaml. Эти новые cmdlet:
ConvertFrom-Yaml
– cmdlet для преобразования данных YAML в хэш-таблицу.
ConvertTo-Yaml
– cmdlet для преобразования объектов хэш-таблицы в данные YAML.
Для подтверждения наличия обеих cmdlet в PowerShell выполните указанную ниже команду в PowerShell.
Как видно ниже, cmdlet Get-Command
перечислил cmdlet из модуля PowerShell-yaml.

Создание сценария конвертации
Для создания сценария конвертации YAML в JSON в PowerShell следуйте этим инструкциям.
1. Откройте ваш редактор кода и создайте новый файл с именем convert-os.ps1 в вашем рабочем каталоге.
2. Скопируйте код ниже и вставьте его в пустой файл convert-os.ps1. Фрагмент кода ниже считывает файл операционных систем operating-systems.yml и преобразует его в формат JSON. После этого JSON сохраняется в файле PowerShell_operating-systems.json.
3. Сохраните файл convert-os.ps1.
Запуск скрипта преобразования
Теперь, когда вы создали свой скрипт преобразования, следующим шагом будет его запуск для преобразования YAML в JSON. Чтобы выполнить скрипт преобразования PowerShell, выполните следующие шаги.
- Откройте окно PowerShell, если еще не открыли.
2. Скопируйте команду ниже, вставьте ее в PowerShell и нажмите Enter. Эта команда вызывает скрипт convert-os.ps1
, который вы создали в предыдущем разделе.
3. После запуска скрипта откройте файл вывода JSON C:\temp\PowerShell_operating-systems.json, созданный скриптом convert-os.ps1 на предыдущем этапе. Для этого выполните следующую команду в PowerShell, чтобы открыть PowerShell_operating-systems.json в блокноте.

Использование Go для преобразования YAML в JSON
Python и PowerShell – оба высокоуровневые языки. Быть высокоуровневыми облегчает написание сценариев, но также отнимает немного контроля. С другой стороны, Go – это низкоуровневый язык, что делает импорт данных YAML более сложным.
Пример в этом разделе будет использовать Go. Последняя версия на момент написания – go1.16.3. Если у вас еще нет Go, обратитесь к странице загрузки и установки, чтобы установить его на свой компьютер.
Добавление поддержки YAML в Go
Как и в PowerShell и Python, поддержка JSON является частью основных библиотек Go, но не YAML. Чтобы добавить поддержку YAML в Go, сначала вам нужно установить пакет YAML.v3 с использованием команды go get
. Для установки пакета YAML.v3:
Сначала на вашем компьютере откройте командную оболочку, которую вы хотите использовать, например, командную строку или PowerShell. В этом примере используется PowerShell.
Далее скопируйте следующую команду и выполните её в PowerShell. Эта команда загрузит и установит пакет с именем gopkg.in/yaml.v3.

Написание Сценария Преобразования
Чтобы создать сценарий преобразования YAML в JSON на Go, следуйте этим инструкциям.
1. Откройте ваш редактор кода и создайте новый файл с именем convert-os.go в вашем рабочем каталоге.
2. Скопируйте код ниже и вставьте в созданный файл convert-os.go. Код импортирует необходимые пакеты, определяет некоторые структуры памяти, импортирует файл YAML и преобразует его в JSON перед записью в файл JSON с именем c:\temp\go_operating-systems.json.
3. Сохраните файл convert-os.go.
Запуск сценария преобразования
Запуск сценариев на Go осуществляется с помощью команды go run
, за которой следует имя файла сценария. Чтобы запустить сценарий преобразования YAML в JSON на Go, выполните следующие действия.
1. На своем компьютере откройте командную оболочку, которую хотите использовать. В Windows команда go
будет работать как в командной строке, так и в PowerShell. В этом примере используется PowerShell для запуска go
.
2. После того как вы находитесь в PowerShell, скопируйте указанную ниже команду и выполните ее в PowerShell. Эта команда вызовет команду go run
для запуска сценария c:\temp\convert-os.go.

3. После выполнения сценария откройте выходной файл C:\temp\Go_operating-systems.json, который создал сценарий convert-os.go на предыдущем шаге. В этом примере файл Go_operating-systems.json открывается в блокноте.

Заключение
В этой статье вы узнали, как преобразовать данные и файлы YAML в JSON с помощью сценариев на Python, PowerShell и Go. Теперь, когда вы узнали различные способы преобразования YAML в JSON, каким способом вы думаете, что будете пользоваться чаще?