ConvertFrom-Json
Converte uma cadeia de caracteres formatada em JSON em um objeto personalizado.
Sintaxe
Default (Predefinição)
ConvertFrom-Json
[-InputObject] <String>
[<CommonParameters>]
Description
O cmdlet ConvertFrom-Json converte uma cadeia de caracteres formatada em JSON (JavaScript Object Notation) num PSObject personalizado ou num objeto Hashtable que possui uma propriedade para cada campo no texto 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 chave 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 cmdlet ConvertTo-Json.
Este cmdlet foi introduzido no PowerShell 3.0.
Observação
No Windows PowerShell 5.1, ConvertFrom-Json retorna um erro quando encontra um comentário JSON. No PowerShell 6 e superior, o cmdlet oferece suporte a JSON com comentários. Os comentários JSON não são capturados na saída de objetos pelo cmdlet. Para obter mais informações, consulte a seção de comentários JSON do artigo about_Comments.
Exemplos
Exemplo 1: Converter um objeto DateTime em um objeto JSON
Este comando usa os cmdlets ConvertTo-Json e ConvertFrom-Json para converter um objeto DateTime do cmdlet Get-Date 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 cmdlet Select-Object para obter todas as propriedades do objeto DateTime. Ele usa o cmdlet ConvertTo-Json para converter o objeto DateTime em uma cadeia de caracteres formatada como um objeto JSON e o cmdlet ConvertFrom-Json 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 cmdlet Invoke-WebRequest para obter cadeias de caracteres JSON de um serviço Web e, em seguida, usa o cmdlet ConvertFrom-Json 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 Invoke-RestMethod, que converte automaticamente o conteúdo JSON em objetos.
Exemplo 3: Converter uma cadeia de caracteres JSON em um objeto personalizado
Este exemplo mostra como usar o cmdlet ConvertFrom-Json para converter um arquivo JSON em um objeto personalizado do PowerShell.
Get-Content -Raw JsonFile.json | ConvertFrom-Json
O comando usa Get-Content cmdlet 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 cmdlet ConvertFrom-Json, 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 enviar uma string 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 InputObject valor não pode ser $null.
Propriedades dos parâmetros
| Tipo: | String |
| Default value: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
Conjuntos de parâmetros
(All)
| Position: | 0 |
| Obrigatório: | True |
| Valor do pipeline: | True |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
CommonParameters
Este cmdlet suporta os parâmetros comuns: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Para obter mais informações, consulte about_CommonParameters.
Entradas
String
Você pode canalizar uma cadeia de caracteres JSON para ConvertFrom-Json.
Saídas
PSCustomObject
Notas
O cmdlet ConvertFrom-Json é implementado usando a classe JavaScriptSerializer.
O tipo PSObject mantém a ordem das propriedades como apresentado na cadeia de caracteres JSON. Enquanto os pares chave-valor são adicionados à hashtable na ordem apresentada na string JSON, os objetos hashtable não mantêm essa ordem.