Como Converter YAML para JSON [Python, PowerShell, Go]

Muitas ferramentas modernas, especialmente nos espaços de gerenciamento de configuração e Infraestrutura como Código (IaC), utilizam arquivos JSON ou YAML para armazenar dados de configuração. Se você precisa converter dados do formato YAML para JSON, então este artigo é para você.

Neste artigo, você aprenderá várias maneiras de converter dados do YAML para o formato JSON, incluindo scripts em Python, PowerShell e Go.

Pré-requisitos

Se você deseja acompanhar os exemplos deste tutorial, certifique-se de ter

  • A code editor. This article will use Visual Studio Code version 1.55.1. Feel free to use any code editor you want.
  • Para começar a converter YAML para JSON, você precisa de um conteúdo YAML de exemplo. Copie o conteúdo abaixo para um novo arquivo chamado sistemas-operacionais.yml. Salve o arquivo YAML no seu diretório de trabalho.
operating-systems.yml
Windows 10: 100
Windows Server 2019: 50
Windows Server 2022: 1
MacOS: 3
CentOS: 75
Photon: 12

Usando Python para Converter YAML para JSON

O Python é uma excelente linguagem para automação. Mas você sabia que pode estender as capacidades do Python e usá-lo para converter documentos de YAML para JSON? E você só precisa seguir alguns passos para começar a converter YAML para JSON em pouco tempo.

O exemplo desta seção requer que você tenha instalado o Python 3.9 e o PIP (a versão mais recente até o momento desta escrita é 21.0.1).

Adicionando Suporte YAML ao Python

O Python não possui suporte nativo para YAML. Isso significa que o Python não pode ler ou interpretar documentos YAML por padrão. Para adicionar suporte YAML ao Python, você primeiro precisa instalar o módulo PyYAML.

Para instalar o módulo PyYAML, você precisará executar o comando pip, que é o instalador de pacotes para Python. Para fazer isso, siga estas etapas.

Primeiro, abra o seu interpretador de comando preferido, como o prompt de comando ou o PowerShell. O comando pip deve funcionar em ambos. Este exemplo usa o PowerShell.

Em seguida, execute o comando abaixo no PowerShell. Este comando instala o módulo PyYAML.

pip install pyyaml

Como você pode ver na captura de tela abaixo, o pip instalou a versão mais recente do PyYAML (5.4.1 até o momento desta escrita).

Installing the PyYAML module

Escrevendo o Script de Conversão

Agora que você instalou o módulo necessário (PyYAML), está pronto para escrever seu script de conversão. Para criar o script Python de YAML para JSON, siga estas etapas.

1. Abra seu editor de código e crie um novo arquivo chamado convert-os.py no seu diretório de trabalho. Este arquivo será seu script.

2. Copie o código abaixo e cole no seu arquivo em branco convert-os.py. Este script irá ler o conteúdo YAML de operating-systems.yml, converter o conteúdo para o formato JSON e escrever a saída JSON no arquivo python_operating-systems.json.

## convert-os.py
## Importar os módulos para lidar com JSON & YAML
import yaml
import json

## Criar uma variável para armazenar os dados a serem importados
os_list = {}

## Ler o arquivo YAML
with open("c:\temp\operating-systems.yml") as infile:
     # Mariscal o YAML na variável definida acima os_list = yaml.load(infile, Loader=yaml.FullLoader)     # Exibir a lista no console. print(os_list)
 Open a file to write the JSON output. The 'w' makes the file writable
 with open("c:\temp\python_operating-systems.json", 'w') as outfile:
     # Mariscal o JSON, definir "indent" torna o arquivo mais legível json.dump(os_list, outfile, indent=4) print("Arquivo JSON escrito.")

3. Salve o script convert-os.py.

Executando o Script de Conversão

Após criar o script de conversão, é hora de testá-lo. Para executar o script Python de YAML para JSON, siga as instruções abaixo:

1. Abra uma janela de terminal. Este artigo usa o PowerShell, mas o prompt de comando (CMD) também funcionará igualmente.

2. Copie o comando abaixo, cole no PowerShell e pressione Enter. Este comando executa o programa executável Python para invocar o script convert-os.py que você criou na seção anterior.

python c:\temp\convert-os.py

Após executar o comando, você deverá ver uma saída semelhante à imagem abaixo. Como você pode ver, o comando exibiu a saída JSON na tela e salvou a mesma saída no arquivo c:\temp\python_operating-systems.json.

Running the YAML to JSON conversion script using Python

3. Por último, abra o arquivo JSON chamado python_operating-systems.json que o script Python convert-os.py deve ter criado. Neste exemplo, para abrir o arquivo no bloco de notas, execute o comando abaixo no PowerShell.

notepad C:\temp\python_operating-systems.json
Viewing the python_operating-systems.json file in notepad

Usando o PowerShell para Converter YAML em JSON

O PowerShell é capaz de modificar arquivos de texto e converter objetos para vários formatos, incluindo JSON. Como o PowerShell é extensível, você pode usar o PowerShell para converter arquivos YAML para o formato JSON com o módulo certo.

Adicionando Suporte YAML ao PowerShell

O PowerShell possui suporte integrado para manipular conteúdo JSON, mas não para YAML. Felizmente, existe um módulo que estende o PowerShell para suportar arquivos YAML. Este módulo é chamado PowerShell-yaml, e a versão mais recente até o momento desta escrita é 0.4.2. Siga estas etapas para instalar o módulo.

1. Em seu computador, abra uma sessão do PowerShell.

2. Copie o comando abaixo, cole-o no PowerShell e pressione Enter. Este comando usa o cmdlet Install-Module para instalar o módulo PowerShell-yaml.

Install-Module PowerShell-yaml

3. Após instalar o módulo, dois novos cmdlets estarão disponíveis no PowerShell como parte do módulo PowerShell-yaml. Estes novos cmdlets são:

ConvertFrom-Yaml – o cmdlet para converter dados YAML em uma tabela hash.

ConvertTo-Yaml – o cmdlet para converter objetos de tabela hash em dados YAML.

Para confirmar que ambos os cmdlets estão disponíveis no PowerShell, execute o comando abaixo no PowerShell.

Get-Command -Module PowerShell-yaml

Como você pode ver abaixo, o cmdlet Get-Command listou os cmdlets do módulo PowerShell-yaml.

Getting the PowerShell-yaml cmdlets

Escrevendo o Script de Conversão

Para criar o script de conversão de YAML para JSON no PowerShell, siga estas instruções.

1. Abra seu editor de código e crie um novo arquivo chamado convert-os.ps1 no seu diretório de trabalho.

2. Copie o código abaixo e cole no arquivo em branco convert-os.ps1. O trecho de código a seguir lê o arquivo operating-systems.yml e o converte para JSON. Uma vez em JSON, ele então armazena o JSON no arquivo PowerShell_operating-systems.json.

#convert-os.ps1
 #Leia o arquivo YAML usando Get-Content e converta os dados para uma tabela de hash usando ConvertFrom-Yaml. A variável $os_list armazena o objeto da tabela de hash.
 $os_list = (Get-Content -Path "C:\temp\operating-systems.yml" | ConvertFrom-Yaml)
 #Converta o objeto da tabela de hash na variável $os_list para o formato JSON usando ConvertTo-Json. Uma vez em JSON, salve o arquivo em C:\temp\PowerShell_operating-systems.json usando Set-Content.
 Set-Content -Path "C:\temp\PowerShell_operating-systems.json" -Value ($os_list | ConvertTo-Json)

3. Salve o arquivo convert-os.ps1.

Executando o Script de Conversão

Agora que você criou seu script de conversão, o próximo passo é executá-lo para converter YAML para JSON. Para executar o script de conversão do PowerShell, siga estes passos.

  1. Abra uma janela do PowerShell se ainda não tiver uma aberta.

2. Copie o comando abaixo, cole no PowerShell e pressione Enter. Este comando invoca o script convert-os.ps1 que você criou na seção anterior.

c:\temp\convert-os.ps1

3. Após executar o script, abra o arquivo de saída JSON C:\temp\PowerShell_operating-systems.json que o script convert-os.ps1 criou na etapa anterior. Para fazer isso, execute o comando abaixo no PowerShell para abrir o PowerShell_operating-systems.json no bloco de notas.

notepad C:\temp\PowerShell_operating-systems.json
Viewing the content of the PowerShell_operating-systems.json file

Usando Go para Converter YAML para JSON

Python e PowerShell são ambas linguagens de alto nível. Ser de alto nível facilita a escrita de scripts, mas também retira um pouco do controle. Por outro lado, Go é uma linguagem de baixo nível, o que torna a importação de dados YAML mais complexa.

O exemplo desta seção usará Go. A versão mais recente até o momento desta escrita é go1.16.3. Se você ainda não tem o Go, consulte a página de download e instalação para instalá-lo no seu computador.

Adicionando Suporte YAML ao Go

Assim como PowerShell e Python, o suporte JSON faz parte das bibliotecas principais do Go, mas o suporte YAML não. Para adicionar suporte YAML ao Go, você precisa instalar o pacote YAML.v3 primeiro usando o comando go get . Para instalar o pacote YAML.v3:

Primeiro, em seu computador, abra o shell de comando que deseja usar, como o prompt de comando ou o PowerShell. Este exemplo usa o PowerShell.

Em seguida, copie o comando abaixo e execute-o no PowerShell. Este comando irá baixar e instalar o pacote nomeado gopkg.in/yaml.v3.

go get gopkg.in/yaml.v3
Installing the yaml.v3 package in Go

Escrevendo o Script de Conversão

Para criar o script de conversão YAML para JSON em Go, siga estas instruções.

1. Abra seu editor de código e crie um novo arquivo chamado convert-os.go em seu diretório de trabalho.

2. Copie o código abaixo e cole no arquivo em branco convert-os.go. O código importa os pacotes necessários, define algumas estruturas de memória, importa o arquivo YAML e converte para JSON antes de escrever em um arquivo JSON chamado c:\temp\go_operating-systems.json.

// Isso diz ao go qual função carregar.
 package main
 // Importar pacotes:
 import (
  // Módulo JSON
     "encoding/json"
  // Para escrever saída na tela
     "fmt"
  // Para ler e escrever arquivos
     "io/ioutil"
 // Módulo YAML
     "gopkg.in/yaml.v3"
 )
 // Definir duas "Structs", que são estruturas de dados na memória, e combinam
 // com a forma dos arquivos YAML e JSON.
 type operatingSystems struct {
     Windows10         int yaml:"Windows 10"
     WindowsServer2019 int yaml:"Windows Server 2019"
     WindowsServer2022 int yaml:"Windows Server 2022"
     MacOS             int yaml:"MacOS"
     CentOS            int yaml:"CentOS"
     Photon            int yaml:"Photon"
 }
 type operatingSystemsjson struct {
     Windows10         int json:"Windows 10"
     WindowsServer2019 int json:"Windows Server 2019"
     WindowsServer2022 int json:"Windows Server 2022"
     MacOS             int json:"MacOS"
     CentOS            int json:"CentOS"
     Photon            int json:"Photon"
 }
 func main() {
   // Informar ao usuário que o processo foi iniciado
     fmt.Println("Parsing YAML file")
 // Definir o caminho para o arquivo de entrada
 var fileName string = "c:\temp\operating-systems.yml"
 // Carregar o YAML do arquivo. Go requer tratamento de erro para esta etapa.
 yamlFile, err := ioutil.ReadFile(fileName)
     if err != nil {
         fmt.Printf("Error reading YAML file: %s\n", err)
         return
     }
 // Extrair o YAML para sua Struct
     var oses operatingSystems
     yaml.Unmarshal(yamlFile, &oses)
 // Criar a Struct JSON, usando os dados da Struct YAML
 var osesjson = operatingSystemsjson{
         Windows10:         oses.Windows10,
         WindowsServer2019: oses.WindowsServer2019,
         WindowsServer2022: oses.WindowsServer2022,
         MacOS:             oses.MacOS,
         CentOS:            oses.CentOS,
         Photon:            oses.Photon,
     }
 // Criar uma string para saída no formato JSON.
 jsonOutput, err := json.Marshal(osesjson)
 // Imprimir o resultado na tela. Observe que %+v significa que
   // o nome da variável é impresso com os dados. É por isso que
   // não há espaços nos nomes de saída.
     fmt.Printf("Result: %+v\n", osesjson)
 // escrever o arquivo JSON
 err = ioutil.WriteFile("c:\temp\Go_operating-systems.json", jsonOutput, 0644)
 }

3. Salve o arquivo convert-os.go.

Executando o Script de Conversão

Para executar scripts Go, use o comando go run seguido do nome do script. Para executar o script de conversão de YAML para JSON em Go, siga estas etapas.

1. No seu computador, abra o shell de comando que deseja usar. No Windows, o go funcionará tanto no prompt de comando quanto no PowerShell. Este exemplo utiliza o PowerShell para executar o go.

2. Assim que estiver no PowerShell, copie o comando abaixo e execute-o no PowerShell. Este comando invocará o comando go run para executar o script c:\temp\convert-os.go.

go run c:\temp\convert-os.go
Running Convert-os Go script.

3. Após a execução do script, abra o arquivo de saída C:\temp\Go_operating-systems.json que o script convert-os.go criou na etapa anterior. Este exemplo abre o arquivo Go_operating-systems.json no bloco de notas.

Viewing the Go_operating-systems.json in notepad

Conclusão

Neste artigo, você aprendeu como converter dados e arquivos YAML para JSON usando scripts em Python, PowerShell e Go. Agora que você aprendeu diferentes maneiras de converter YAML para JSON, qual você acha que usará mais?

Source:
https://adamtheautomator.com/yaml-to-json/