ConvertFrom-Json
Converte uma cadeia de caracteres formatada em JSON em um objeto personalizado.
Sintaxe
ConvertFrom-Json
[-InputObject] <String>
[<CommonParameters>]
Description
O ConvertFrom-Json
cmdlet converte uma cadeia de caracteres formatada em JSON (JavaScript Object Notation) em um objeto PSObject ou Hashtable personalizado que tem uma propriedade para cada campo na cadeia de caracteres JSON.
JSON é comumente usado por sites para fornecer uma representação textual de objetos. O cmdlet adiciona as propriedades ao novo objeto à medida que processa cada linha da cadeia de caracteres JSON.
O padrão JSON permite nomes de chaves duplicados, que são proibidos nos tipos PSObject e Hashtable . Por exemplo, se a cadeia de caracteres JSON contiver chaves duplicadas, somente a última chave será usada por esse cmdlet. Veja outros exemplos abaixo.
Para gerar uma cadeia de caracteres JSON a partir de qualquer objeto, use o ConvertTo-Json
cmdlet.
Este cmdlet foi introduzido no PowerShell 3.0.
Nota
A partir do PowerShell 6, o cmdlet oferece suporte a JSON com comentários. Os comentários JSON começam com duas barras (//
) caracteres. Os comentários JSON não são capturados na saída de objetos pelo cmdlet. Antes do PowerShell 6, ConvertFrom-Json
retornava um erro quando encontrava um comentário JSON.
Exemplos
Exemplo 1: Converter um objeto DateTime em um objeto JSON
Este comando usa os ConvertTo-Json
cmdlets e ConvertFrom-Json
para converter um objeto DateTime do Get-Date
cmdlet em um objeto JSON e, em seguida, em um PSCustomObject.
Get-Date | Select-Object -Property * | ConvertTo-Json | ConvertFrom-Json
DisplayHint : 2
DateTime : Friday, January 13, 2012 8:06:31 PM
Date : 1/13/2012 8:00:00 AM
Day : 13
DayOfWeek : 5
DayOfYear : 13
Hour : 20
Kind : 2
Millisecond : 400
Minute : 6
Month : 1
Second : 31
Ticks : 634620819914009002
TimeOfDay : @{Ticks=723914009002; Days=0; Hours=20; Milliseconds=400; Minutes=6; Seconds=31; TotalDays=0.83786343634490734; TotalHours=20.108722472277776; TotalMilliseconds=72391400.900200009; TotalMinutes=1206.5233483366667;TotalSeconds=72391.4009002}
Year : 2012
O exemplo usa o Select-Object
cmdlet para obter todas as propriedades do objeto DateTime . Ele usa o ConvertTo-Json
cmdlet para converter o objeto DateTime em uma cadeia de caracteres formatada como um objeto JSON e o ConvertFrom-Json
cmdlet para converter a cadeia de caracteres formatada em JSON em um objeto PSCustomObject .
Exemplo 2: Obter cadeias de caracteres JSON de um serviço Web e convertê-las em objetos do PowerShell
Este comando usa o Invoke-WebRequest
cmdlet para obter cadeias de caracteres JSON de um serviço Web e, em seguida, usa o ConvertFrom-Json
cmdlet para converter conteúdo JSON em objetos que podem ser gerenciados no PowerShell.
# Ensures that Invoke-WebRequest uses TLS 1.2
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$j = Invoke-WebRequest 'https://api.github.com/repos/PowerShell/PowerShell/issues' | ConvertFrom-Json
Você também pode usar o cmdlet, que converte automaticamente o Invoke-RestMethod
conteúdo JSON em objetos.
Exemplo 3: Converter uma cadeia de caracteres JSON em um objeto personalizado
Este exemplo mostra como usar o ConvertFrom-Json
cmdlet para converter um arquivo JSON em um objeto personalizado do PowerShell.
Get-Content -Raw JsonFile.JSON | ConvertFrom-Json
O comando usa o cmdlet Get-Content para obter as cadeias de caracteres em um arquivo JSON. O parâmetro Raw retorna o arquivo inteiro como um único objeto JSON. Em seguida, ele usa o operador de pipeline para enviar a cadeia de caracteres delimitada para o ConvertFrom-Json
cmdlet, que a converte em um objeto personalizado.
Parâmetros
-InputObject
Especifica as cadeias de caracteres JSON a serem convertidas em objetos JSON. Insira uma variável que contenha a cadeia de caracteres ou digite um comando ou expressão que obtenha a cadeia de caracteres. Você também pode canalizar uma cadeia de caracteres para ConvertFrom-Json
.
O parâmetro InputObject é necessário, mas seu valor pode ser uma cadeia de caracteres vazia. Quando o objeto de entrada é uma cadeia de caracteres vazia, ConvertFrom-Json
não gera nenhuma saída. O valor InputObject não pode ser $null
.
Tipo: | String |
Position: | 0 |
Default value: | None |
Necessário: | True |
Aceitar entrada de pipeline: | True |
Aceitar carateres universais: | False |
Entradas
Você pode canalizar uma cadeia de caracteres JSON para ConvertFrom-Json
.
Saídas
PSCustomObject
Notas
O ConvertFrom-Json
cmdlet é implementado usando a classe JavaScriptSerializer.
O tipo PSObject mantém a ordem das propriedades conforme apresentado na cadeia de caracteres JSON. Enquanto os pares chave-valor são adicionados à Hashtable na ordem apresentada na cadeia de caracteres JSON, os objetos Hashtable não mantêm essa ordem.