ConvertFrom-Json
Converte uma cadeia de caracteres formatada em JSON em um objeto personalizado.
Sintaxe
Default (Default)
ConvertFrom-Json
[-InputObject] <String>
[<CommonParameters>]
Description
O cmdlet ConvertFrom-Json converte uma cadeia de caracteres no formato JSON (JavaScript Object Notation) em um PSObject personalizado ou em um objeto Hashtable que tem uma propriedade para cada campo na cadeia de caracteres JSON.
O JSON é comumente usado por sites da Web 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 de qualquer objeto, use o cmdlet ConvertTo-Json.
Esse 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 dá 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 Comentários JSON do artigo about_Comments.
Exemplos
Exemplo 1: Converter um objeto DateTime em um objeto JSON
Esse 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
Esse comando usa o cmdlet Invoke-WebRequest para obter cadeias de caracteres JSON de um serviço Web e 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 todo o arquivo 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 obtém a cadeia de caracteres. Você também pode redirecionar 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 do InputObject não pode ser $null.
Propriedades do parâmetro
| Tipo: | String |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Cargo: | 0 |
| Obrigatório: | True |
| Valor do pipeline: | True |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | 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
Observações
O cmdlet ConvertFrom-Json é implementado usando a classe JavaScriptSerializer.
O tipo PSObject mantém a ordem das propriedades, conforme apresentado na string JSON. Embora os pares chave-valor sejam adicionados à tabela hash na ordem apresentada na string JSON, objetos do tipo tabela hash não mantêm essa ordem.