(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Como ler e processar ficheiros JSON em PowerShell

João Barros 10 de July de 2026 4 min de leitura

Os ficheiros JSON estão em todo o lado: respostas de APIs, ficheiros de configuração e exportações de dados. Saber ler ficheiros JSON em PowerShell permite transformar esse texto em objetos que pode filtrar, alterar e voltar a gravar — tudo com cmdlets nativos, sem instalar nada. A seguir está o passo a passo completo, do carregamento do ficheiro até à gravação do resultado.

Pré-requisitos

  • Windows PowerShell 5.1 ou PowerShell 7+ (os cmdlets de JSON existem em ambos).
  • Um ficheiro JSON de exemplo guardado no disco (vamos usar produtos.json).
  • Noções básicas da consola do PowerShell: abrir a janela e executar comandos.

Passo 1: Preparar um ficheiro JSON de exemplo

Para acompanhar o exemplo, crie um ficheiro chamado produtos.json na sua pasta de trabalho com alguns registos. Cada objeto representa um produto com nome, preço e stock. Este será o ficheiro que vamos ler e processar.

[
  { "nome": "Teclado", "preco": 25.5,  "stock": 12 },
  { "nome": "Rato",    "preco": 15.0,  "stock": 0  },
  { "nome": "Monitor", "preco": 199.9, "stock": 5  }
]

Passo 2: Ler o ficheiro com Get-Content e ConvertFrom-Json

O primeiro passo é ler o texto do ficheiro e convertê-lo em objetos do PowerShell. Use Get-Content com o parâmetro -Raw para ler o ficheiro inteiro como um único texto e passe o resultado a ConvertFrom-Json.

$produtos = Get-Content -Path '.produtos.json' -Raw | ConvertFrom-Json
$produtos

O -Raw é importante: sem ele, o ficheiro é lido linha a linha e o ConvertFrom-Json pode falhar em ficheiros com várias linhas. Depois desta linha, $produtos passa a ser uma coleção de objetos que se comportam como qualquer objeto nativo — pode até correr $produtos | Get-Member para ver as propriedades disponíveis.

Dica: se o seu JSON representar um único objeto (e não uma lista), o ConvertFrom-Json devolve apenas um objeto. Nesse caso não precisa de percorrer uma coleção; acede diretamente às propriedades.

Passo 3: Aceder a propriedades e filtrar dados

Como agora tem objetos, pode aceder a cada campo com um ponto. Por exemplo, $produtos[0].nome devolve o nome do primeiro produto. Para filtrar, use Where-Object; no exemplo seguinte ficamos apenas com os produtos que ainda têm stock disponível.

# Todos os nomes
$produtos.nome

# Apenas produtos com stock disponível
$comStock = $produtos | Where-Object { $_.stock -gt 0 }
$comStock | Select-Object nome, preco

Dentro do filtro, $_ representa o objeto atual. Pode combinar condições com -and e -or e ordenar o resultado com Sort-Object preco, tal como faria numa consulta a uma base de dados.

Passo 4: Alterar valores e gravar com ConvertTo-Json

Depois de trabalhar os dados, é frequente querer gravá-los de novo. Vamos aplicar um desconto de 10% a cada preço e escrever o resultado num ficheiro novo com ConvertTo-Json.

foreach ($p in $produtos) {
    $p.preco = [math]::Round($p.preco - $p.preco / 10, 2)
}

$produtos |
    ConvertTo-Json -Depth 5 |
    Set-Content -Path '.produtos_com_desconto.json' -Encoding UTF8

Repare no parâmetro -Depth. Por omissão, o ConvertTo-Json só converte 2 níveis de profundidade; em dados aninhados, aumentar o -Depth evita perder informação. O -Encoding UTF8 garante que acentos e caracteres especiais ficam corretos no ficheiro gravado.

Verificar o resultado

Para confirmar que tudo correu bem, leia novamente o ficheiro gerado e mostre os dados numa tabela. Se o número de produtos e os preços com desconto aparecerem como esperado, o processamento funcionou.

$verificar = Get-Content -Path '.produtos_com_desconto.json' -Raw | ConvertFrom-Json
$verificar | Format-Table nome, preco, stock
"Total de registos: $($verificar.Count)"

Deve ver a tabela com os três produtos e os preços já reduzidos. Se receber um erro de conversão, confirme que o JSON é válido (chavetas e aspas bem fechadas) e que usou -Raw na leitura do ficheiro.

Conclusão

Com apenas dois cmdlets — ConvertFrom-Json e ConvertTo-Json — o PowerShell lê, transforma e grava dados JSON sem qualquer ferramenta externa. A partir daqui pode ligar estes passos a chamadas de API, automatizar relatórios periódicos ou preparar ficheiros para carregar num Data Warehouse. Qual será o próximo ficheiro JSON que vai deixar de editar à mão?