Como Escrever um Objeto JSON em um Arquivo no PowerShell

  1. Objetos Personalizados do PowerShell
  2. Objeto JSON do PowerShell para String JSON
  3. Salvar String JSON em um Arquivo Usando ConvertTo-Json e Out-File
  4. Salvar String JSON em um Arquivo Usando ConvertTo-Json e Set-Content
  5. Salvar String JSON em um Arquivo Usando ConvertTo-Json e Add-Content
  6. Conclusão
Como Escrever um Objeto JSON em um Arquivo no PowerShell

PowerShell, uma linguagem de script robusta e versátil, fornece ferramentas poderosas para gerenciar e manipular dados. Quando se trata de lidar com dados JSON (Notação de Objetos JavaScript), o PowerShell oferece maneiras eficientes de converter objetos personalizados em strings JSON e, subsequentemente, escrevê-los em arquivos.

Neste artigo, vamos nos aprofundar no processo de conversão de objetos do PowerShell em strings JSON e salvá-los em arquivos usando vários cmdlets como ConvertTo-Json, Out-File, Set-Content e Add-Content.

Objetos Personalizados do PowerShell

O PSCustomObject é um elemento fundamental no PowerShell usado para definir objetos personalizados. Um objeto personalizado geralmente contém propriedades e seus valores associados, fornecendo uma maneira estruturada de organizar dados.

Além de criar objetos personalizados do zero, o PowerShell também é proficiente em lidar e processar objetos JSON de forma eficiente.

Criando um Objeto Personalizado JSON

Vamos começar examinando como criar um objeto personalizado JSON usando uma estrutura JSON de exemplo. Armazenaremos essa estrutura JSON na variável $MyJsonVar.

$MyJsonVar = @"
 {
   "ExampleJson":{
     "Fruit1":{
       "Name":"Apple",
       "Price":"`$10.00"
     }
  }
 }
"@

Saída:

Objetos Personalizados PowerShell 1

Neste exemplo, definimos uma estrutura JSON representando informações sobre frutas.

Convertendo JSON em Objeto Personalizado do PowerShell

Para converter a representação JSON em um Objeto Personalizado do PowerShell, utilizamos o cmdlet ConvertFrom-JSON. Vamos atribuir o novo objeto JSON criado à variável $MyJsonObject.

$MyJsonObject = $MyJsonVar | ConvertFrom-Json

O cmdlet ConvertFrom-JSON transforma a estrutura JSON em um PSCustomObject apropriado.

Exibindo o Objeto Personalizado do PowerShell Criado

Agora, vamos exibir o recém-criado PSCustomObject, que corresponde à estrutura JSON original.

$MyJsonObject

Saída:

Objetos Personalizados do PowerShell 3

Esses comandos acessam e exibem as propriedades de preço e nome da fruta definida no objeto personalizado. Portanto, foi confirmado que temos um objeto personalizado adequado do PowerShell chamado $MyJsonObject.

Objeto JSON do PowerShell para String JSON

O PowerShell oferece o cmdlet ConvertTo-Json, uma ferramenta valiosa para converter um objeto personalizado existente em uma string JSON. Este processo transforma efetivamente o objeto em uma representação de texto simples no formato JSON, que pode ser utilizada ou armazenada conforme necessário.

Sintaxe do cmdlet ConvertTo-Json:

ConvertTo-Json
[-InputObject] <Object>
[-Depth <Int32>]
[-Compress]
[-EnumsAsStrings]
[-AsArray]
[-EscapeHandling <StringEscapeHandling>]
[<CommonParameters>]

O cmdlet ConvertTo-Json fornece vários parâmetros opcionais para personalizar o processo de conversão JSON. Aqui está uma descrição desses parâmetros:

  • -InputObject: Este parâmetro é fundamental, pois designa o objeto personalizado que precisa ser convertido em uma string JSON. Você pode passar o objeto diretamente para este parâmetro.

  • -Depth: Este parâmetro crucial permite especificar o número de níveis na string JSON resultante. A profundidade indica quantos níveis de objetos ou arrays aninhados serão incluídos na string JSON.

    No entanto, deve ser usado judiciosamente, pois o uso inadequado pode levar à perda de dados. O valor padrão é definido como 2.

  • -Compress: Este parâmetro comprime a saída JSON removendo espaços em branco e indentação desnecessários, resultando em uma string JSON mais compacta.

  • -EnumsAsStrings: Quando usado, este parâmetro representa valores de enumeração como strings na saída JSON, garantindo compatibilidade com sistemas que podem não lidar bem com enumerações numéricas.

  • -AsArray: Quando especificado, este parâmetro formata a saída como um array JSON, mesmo que o objeto de entrada não seja um array.

  • -EscapeHandling: Este parâmetro permite personalizar como caracteres especiais são escapados na string JSON, fornecendo opções como Default, EscapeNonAscii, EscapeHtml e DoNotEscape.

Para demonstrar o uso do cmdlet ConvertTo-Json, vamos considerar o objeto personalizado na seção anterior ($MyJsonObject):

Podemos passar um objeto personalizado para o cmdlet ConvertTo-Json facilmente. Podemos enviar o $MyJsonObject através do pipe (|) para transformar o objeto personalizado em uma string JSON.

$MyJsonObject | ConvertTo-Json

Saída:

Objeto JSON para String JSON

Vamos demonstrar ainda mais o uso do cmdlet ConvertTo-Json. Vamos considerar um objeto personalizado chamado $AnotherJsonObject:

$AnotherJsonObject = @{
    Name     = "John Doe"
    Age      = 30
    IsActive = $true
    Hobbies  = @("Reading", "Gardening")
    Address  = @{
        Street  = "1234 Elm St"
        City    = "Anytown"
        Country = "USA"
    }
}

Para converter este objeto em uma string JSON e exibir a saída, use o seguinte comando:

$AnotherJsonObject | ConvertTo-Json

A saída dessa transformação é uma string JSON ilustrativa representando o objeto personalizado original.

{
    "Name": "John Doe",
    "Age": 30,
    "IsActive": true,
    "Hobbies": [
        "Reading",
        "Gardening"
    ],
    "Address": {
        "Street": "1234 Elm St",
        "City": "Anytown",
        "Country": "USA"
    }
}

Como podemos ver, a saída mostra um objeto estruturado ($AnotherJsonObject) representando informações pessoais, como nome, idade, status de atividade, hobbies e detalhes de endereço de uma pessoa.

Salvar String JSON em um Arquivo Usando ConvertTo-Json e Out-File

Uma vez que você obteve uma string JSON usando o cmdlet ConvertTo-Json no PowerShell, o próximo passo lógico é salvá-la em um arquivo para uso posterior ou compartilhamento. Felizmente, o PowerShell fornece vários métodos para fazer isso, sendo um dos mais simples o uso de Out-File.

O cmdlet Out-File é uma ferramenta confiável para salvar a string JSON em um arquivo. Abaixo está um exemplo ilustrando como alcançar isso:

$MyJsonObject | ConvertTo-Json | Out-File -FilePath "D:\path\to\example.json"

Saída:

Salvando a string JSON em um arquivo

Neste exemplo, $MyJsonObject representa a variável contendo a string JSON gerada usando ConvertTo-Json. O pipeline (|) então passa essa string JSON para Out-File para escrita em um arquivo.

O parâmetro -FilePath especifica o caminho de destino para a string JSON. Basta substituir "D:\path\to\example.json" pelo caminho de arquivo desejado onde você pretende salvar o conteúdo JSON.

Ao usar Out-File dessa maneira, você persiste de forma eficiente seus dados JSON em um arquivo, tornando-o acessível para uso futuro ou compartilhamento. Essa técnica simples, mas poderosa, é instrumental na gestão efetiva de dados JSON dentro de um ambiente PowerShell.

Salvar String JSON em um Arquivo Usando ConvertTo-Json e Set-Content

Outra maneira de salvar a string JSON em um arquivo é usando o cmdlet Set-Content. O cmdlet Set-Content oferece uma maneira direta de escrever dados em um arquivo, tornando-o uma escolha adequada para salvar uma string JSON em disco.

O seguinte exemplo demonstra esse processo:

$MyJsonObject | ConvertTo-Json | Set-Content -Path "D:\path\to\example.json"

Neste exemplo, $MyJsonObject é a variável contendo a string JSON gerada usando ConvertTo-Json. O pipeline (|) passa essa string JSON para Set-Content para escrita em um arquivo.

O parâmetro -Path especifica o caminho de destino para a string JSON. Basta substituir "D:\path\to\example.json" pelo caminho de arquivo desejado onde você pretende salvar o conteúdo JSON.

Salvar String JSON em um Arquivo Usando ConvertTo-Json e Add-Content

Outro método que podemos usar para salvar uma string JSON em um arquivo no PowerShell é o cmdlet Add-Content, que permite anexar a string JSON a um arquivo existente. O seguinte exemplo demonstra como alcançar isso:

$MyJsonObject | ConvertTo-Json | Add-Content -Path "D:\path\to\example.json"

Neste exemplo, $MyJsonObject representa a variável contendo a string JSON gerada usando ConvertTo-Json. O pipeline (|) passa essa string JSON para Add-Content para anexar a um arquivo especificado pelo parâmetro -Path.

O parâmetro -Path indica o arquivo ao qual a string JSON será anexada. Basta substituir "D:\path\to\example.json" pelo caminho de arquivo desejado onde você pretende anexar o conteúdo JSON.

O cmdlet Add-Content oferece uma maneira conveniente de adicionar ou anexar conteúdo a um arquivo sem sobrescrever os dados existentes. Isso é especialmente útil ao lidar com strings JSON que precisam ser atualizadas ou estendidas ao longo do tempo.

Conclusão

Este artigo demonstrou o processo de conversão de objetos do PowerShell em strings JSON e salvá-los em arquivos usando o cmdlet ConvertTo-Json, juntamente com outros cmdlets de manipulação de arquivos, como Out-File, Set-Content e Add-Content.

Ao aproveitar essas ferramentas, os usuários podem gerenciar eficazmente dados JSON, permitindo uma gestão de dados, compartilhamento e integração simplificados com diversas aplicações e sistemas.

Está gostando dos nossos tutoriais? Inscreva-se no DelftStack no YouTube para nos apoiar na criação de mais vídeos tutoriais de alta qualidade. Inscrever-se
Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.

Artigo relacionado - PowerShell JSON