Compartilhar via


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 é necessário.

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:

  • IgnoreComments
  • AllowTrailingCommas

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, valida que a entrada JSON está em conformidade com a especificação especificada pelo parâmetro de Esquema e retornará somente se a entrada estiver em conformidade com o esquema fornecido.

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.