Test-Json
Testa se uma cadeia de caracteres é um documento JSON válido
Syntax
Test-Json
[-Json] <String>
[<CommonParameters>]
Test-Json
[-Json] <String>
[[-Schema] <String>]
[<CommonParameters>]
Test-Json
[-Json] <String>
[-SchemaFile <String>]
[<CommonParameters>]
Description
O Test-Json
cmdlet testa se uma cadeia de caracteres é um documento JSON (JavaScript Object Notation) válido e pode, opcionalmente, verificar esse documento JSON em relação a um esquema fornecido.
A cadeia de caracteres verificada pode ser usada com o ConvertFrom-Json
cmdlet 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 acessa a entrada JSON.
Muitos sites usam JSON em vez de XML para serializar dados para a comunicação entre servidores e aplicativos baseados na web.
Esse 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
Test-Json : IntegerExpected: #/age
At line:1 char:37
+ "{'name': 'Ashley', 'age': '25'}" | Test-Json -Schema $schema
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Test-Json], Exception
+ FullyQualifiedErrorId : InvalidJsonAgainstSchema,Microsoft.PowerShell.Commands.TestJsonCommand
False
Neste exemplo, obtemos 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 resolve a 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 arquivos JSON sejam validados em relação a esses esquemas.
Neste exemplo, temos schema.json
um arquivo que faz referência a definitions.json
.
PS> Get-Content schema.json
{
"description":"A person",
"type":"object",
"properties":{
"name":{
"$ref":"definitions.json#/definitions/name"
},
"hobbies":{
"$ref":"definitions.json#/definitions/hobbies"
}
}
}
PS> 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 Estruturando um esquema complexo.
Parâmetros
-Json
Especifica a cadeia de caracteres JSON a ser testada quanto à validade. Insira uma variável que contenha a cadeia de caracteres ou digite um comando ou expressão que obtenha essa cadeia. Você também pode canalizar uma cadeia de caracteres para Test-Json
.
O parâmetro Json é necessário.
Type: | String |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Schema
Especifica um esquema para validar a entrada JSON. Se aprovada, Test-Json
validará se a entrada JSON está em conformidade com a especificação especificada pelo parâmetro Schema e retornará $true
somente se a entrada estiver em conformidade com o esquema fornecido.
Para obter mais informações, consulte Esquema JSON.
Type: | String |
Position: | 2 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entradas
Você pode canalizar uma cadeia de caracteres JSON para Test-Json
.
Saídas
Boolean
Observações
O Test-Json
cmdlet é implementado usando a classe NJsonSchema.
Desde o PowerShell 6, o PowerShell usa os assemblies Newtonsoft.Json para todas as 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.