Test-Json
Testa se uma cadeia de caracteres é um documento JSON válido
Sintaxe
JsonString (Padrão)
Test-Json
[-Json] <String>
[-Options <String[]>]
[<CommonParameters>]
JsonStringWithSchemaString
Test-Json
[-Json] <String>
[-Schema] <String>
[-Options <String[]>]
[<CommonParameters>]
JsonStringWithSchemaFile
Test-Json
[-Json] <String>
-SchemaFile <String>
[-Options <String[]>]
[<CommonParameters>]
JsonPath
Test-Json
-Path <String>
[-Options <String[]>]
[<CommonParameters>]
JsonPathWithSchemaString
Test-Json
[-Schema] <String>
-Path <String>
[-Options <String[]>]
[<CommonParameters>]
JsonPathWithSchemaFile
Test-Json
-Path <String>
-SchemaFile <String>
[-Options <String[]>]
[<CommonParameters>]
JsonLiteralPath
Test-Json
-LiteralPath <String>
[-Options <String[]>]
[<CommonParameters>]
JsonLiteralPathWithSchemaString
Test-Json
[-Schema] <String>
-LiteralPath <String>
[-Options <String[]>]
[<CommonParameters>]
JsonLiteralPathWithSchemaFile
Test-Json
-LiteralPath <String>
-SchemaFile <String>
[-Options <String[]>]
[<CommonParameters>]
Description
O cmdlet Test-Json testa se uma cadeia de caracteres é um documento JSON (JavaScript Object Notation) válido e, opcionalmente, pode verificar esse documento JSON em relação a um esquema fornecido.
A cadeia de caracteres verificada pode ser usada com o cmdlet ConvertFrom-Json converter uma cadeia de caracteres formatada em JSON em um objeto JSON, que é facilmente gerenciado no PowerShell ou enviado para outro programa ou serviço Web que acesse a entrada JSON.
Muitos sites usam JSON em vez de XML para serializar dados para comunicação entre servidores e aplicativos baseados na Web.
Este cmdlet foi introduzido no PowerShell 6.1
Exemplos
Exemplo 1: Testar se um objeto é JSON válido
Este exemplo testa se a cadeia de caracteres de entrada é um documento JSON válido.
'{"name": "Ashley", "age": 25}' | Test-Json
True
Exemplo 2: testar um objeto em relação a um esquema fornecido
Este exemplo usa uma cadeia de caracteres que contém um esquema JSON e o compara a uma cadeia de caracteres de entrada.
$schema = @'
{
"definitions": {},
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "http://example.com/root.json",
"type": "object",
"title": "The Root Schema",
"required": [
"name",
"age"
],
"properties": {
"name": {
"$id": "#/properties/name",
"type": "string",
"title": "The Name Schema",
"default": "",
"examples": [
"Ashley"
],
"pattern": "^(.*)$"
},
"age": {
"$id": "#/properties/age",
"type": "integer",
"title": "The Age Schema",
"default": 0,
"examples": [
25
]
}
}
}
'@
'{"name": "Ashley", "age": "25"}' | Test-Json -Schema $schema -ErrorAction SilentlyContinue
False
Neste exemplo, usamos o parâmetro ErrorAction para suprimir a mensagem de erro. Sem esse parâmetro, o comando também gera um erro porque o esquema espera um inteiro para a idade , mas a entrada JSON que testamos usa um valor de cadeia de caracteres.
Para obter mais informações, consulte esquema JSON.
Exemplo 3: Testar um objeto em relação a um esquema do arquivo
O esquema JSON pode referenciar definições usando $ref palavra-chave. O $ref pode ser resolvido para um URI que faz referência a outro arquivo. O parâmetro SchemaFile aceita o caminho literal para o arquivo de esquema JSON e permite que os arquivos JSON sejam validados em relação a esses esquemas.
Neste exemplo, o arquivo schema.json faz referência definitions.json.
Get-Content schema.json
{
"description":"A person",
"type":"object",
"properties":{
"name":{
"$ref":"definitions.json#/definitions/name"
},
"hobbies":{
"$ref":"definitions.json#/definitions/hobbies"
}
}
}
Get-Content definitions.json
{
"definitions":{
"name":{
"type":"string"
},
"hobbies":{
"type":"array",
"items":{
"type":"string"
}
}
}
}
'{"name": "James", "hobbies": [".NET", "Blogging"]}' | Test-Json -SchemaFile 'schema.json'
True
Para obter mais informações, consulte Estruturar um esquema complexo.
Parâmetros
-Json
Especifica a cadeia de caracteres JSON para testar a validade. 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 Test-Json.
O parâmetro Json
Propriedades do parâmetro
| Tipo: | String |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
JsonString
| Cargo: | 0 |
| Obrigatório: | True |
| Valor do pipeline: | True |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
JsonStringWithSchemaString
| Cargo: | 0 |
| Obrigatório: | True |
| Valor do pipeline: | True |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
JsonStringWithSchemaFile
| Cargo: | 0 |
| Obrigatório: | True |
| Valor do pipeline: | True |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-LiteralPath
Especifica um caminho para um arquivo JSON. O valor de LiteralPath é usado exatamente como é digitado. Nenhum caractere é interpretado como caractere curinga. Se o caminho incluir caracteres de escape, coloque-o entre aspas simples. Aspas simples indicam ao PowerShell que não deve interpretar nenhum caractere como uma sequência de escape.
Esse parâmetro foi adicionado no PowerShell 7.4.
Propriedades do parâmetro
| Tipo: | String |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
| Aliases: | PSPath, LP |
Conjuntos de parâmetros
JsonLiteralPath
| Cargo: | 0 |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | True |
| Valor dos argumentos restantes: | False |
JsonLiteralPathWithSchemaString
| Cargo: | 0 |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | True |
| Valor dos argumentos restantes: | False |
JsonLiteralPathWithSchemaFile
| Cargo: | 0 |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | True |
| Valor dos argumentos restantes: | False |
-Options
Por padrão, Test-Json não dá suporte a JSON contendo comentários ou vírgulas à direita. Esse parâmetro permite que você especifique opções para alterar o comportamento padrão. As seguintes opções estão disponíveis:
IgnoreCommentsAllowTrailingCommas
Esse parâmetro foi adicionado ao PowerShell 7.5.0-preview.4.
Propriedades do parâmetro
| Tipo: | String[] |
| Valor padrão: | None |
| Valores aceitos: | IgnoreComments, AllowTrailingCommas |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Cargo: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-Path
Especifica o caminho para um arquivo JSON. Esse cmdlet obtém o item no local especificado. Caracteres curinga são permitidos, mas o padrão deve corresponder a um único arquivo.
Esse parâmetro foi adicionado no PowerShell 7.4.
Propriedades do parâmetro
| Tipo: | String |
| Valor padrão: | None |
| Dá suporte a curingas: | True |
| DontShow: | False |
Conjuntos de parâmetros
JsonPath
| Cargo: | 0 |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | True |
| Valor dos argumentos restantes: | False |
JsonPathWithSchemaString
| Cargo: | 0 |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | True |
| Valor dos argumentos restantes: | False |
JsonPathWithSchemaFile
| Cargo: | 0 |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | True |
| Valor dos argumentos restantes: | False |
-Schema
Especifica um esquema para validar a entrada JSON. Se aprovada,
Para obter mais informações, consulte esquema JSON.
Propriedades do parâmetro
| Tipo: | String |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
JsonStringWithSchemaString
| Cargo: | 1 |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
JsonLiteralPathWithSchemaString
| Cargo: | 1 |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
JsonPathWithSchemaString
| Cargo: | 1 |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-SchemaFile
Especifica um arquivo de esquema usado para validar a entrada JSON. Quando usado, o Test-Json retornará $true somente se a entrada JSON estiver em conformidade com o esquema definido no arquivo especificado pelo parâmetro SchemaFile.
Para obter mais informações, consulte esquema JSON.
Propriedades do parâmetro
| Tipo: | String |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
JsonStringWithSchemaFile
| Cargo: | 1 |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
JsonLiteralPathWithSchemaFile
| Cargo: | 1 |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
JsonPathWithSchemaFile
| Cargo: | 1 |
| Obrigatório: | True |
| Valor do pipeline: | False |
| 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 este cmdlet.
Saídas
Boolean
Esse cmdlet retornará $true se o JSON for válido e, caso contrário, $false.
Observações
Desde o PowerShell 6, o PowerShell usa os assemblies Newtonsoft.Json para funções JSON. A implementação da Newtonsoft inclui várias extensões para o padrão JSON, como suporte para comentários e uso de aspas simples. Para obter uma lista completa de recursos, consulte a documentação da Newtonsoft em https://www.newtonsoft.com/json.
A partir do PowerShell 7.4, Test-Json usa System.Text.Json para análise JSON e JsonSchema.NET para validação de esquema.
Com essas alterações, Test-Json:
- Não dá mais suporte a esquemas do Draft 4
- Só dá suporte a JSON estritamente compatível
Para obter uma lista completa das diferenças entre Newtonsoft.Json e System.Text.Json, consulte a Tabela de diferenças em Migrar de Newtonsoft.Json para System.Text.Json.
Para obter mais informações sobre especificações de esquema JSON, consulte a documentação em JSON-Schema.org.