Condividi tramite


Test-Json

Verifica se una stringa è un documento JSON valido

Sintassi

__AllParameterSets (Impostazione predefinita)

Test-Json
    [-Json] <String>
    [<CommonParameters>]

SchemaString

Test-Json
    [-Json] <String>
    [[-Schema] <String>]
    [<CommonParameters>]

SchemaFile

Test-Json
    [-Json] <String>
    [-SchemaFile <String>]
    [<CommonParameters>]

Descrizione

Il cmdlet Test-Json verifica se una stringa è un documento JSON (JavaScript Object Notation) valido e può facoltativamente verificare che il documento JSON sia rispetto a uno schema specificato.

La stringa verificata può quindi essere usata con il cmdlet ConvertFrom-Json convertire una stringa in formato JSON in un oggetto JSON, che è facilmente gestito in PowerShell o inviato a un altro programma o servizio Web che accede all'input JSON.

Molti siti Web usano JSON anziché XML per serializzare i dati per la comunicazione tra server e app basate sul Web.

Questo cmdlet è stato introdotto in PowerShell 6.1

Esempio

Esempio 1: Verificare se un oggetto è JSON valido

In questo esempio viene verificato se la stringa di input è un documento JSON valido.

"{'name': 'Ashley', 'age': 25}" | Test-Json
True

Esempio 2: Testare un oggetto in base a uno schema fornito

Questo esempio accetta una stringa contenente uno schema JSON e la confronta con una stringa di input.

$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

In questo esempio viene visualizzato un errore perché lo schema prevede un numero intero per età, ma l'input JSON testato usa invece un valore stringa.

Per altre informazioni, vedere schema JSON.

Esempio 3: Testare un oggetto su uno schema da un file

Lo schema JSON può fare riferimento alle definizioni usando $ref parola chiave. Il $ref può essere risolto in un URI che fa riferimento a un altro file. Il parametro SchemaFile accetta il percorso letterale del file di schema JSON e consente la convalida dei file JSON rispetto a tali schemi.

In questo esempio abbiamo un schema.json file che fa riferimento 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

Per altre informazioni, vedere strutturazione di uno schema complesso.

Parametri

-Json

Specifica la stringa JSON da testare per la validità. Immettere una variabile contenente la stringa oppure digitare un comando o un'espressione che ottiene la stringa. È anche possibile inviare tramite pipe una stringa a Test-Json.

È necessario il parametro Json.

Proprietà dei parametri

Tipo:String
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

(All)
Posizione:1
Obbligatorio:True
Valore dalla pipeline:True
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-Schema

Specifica uno schema per convalidare l'input JSON. Se passato, Test-Json convaliderà che l'input JSON sia conforme alla specifica specificata dal parametro Schema e restituirà $true solo se l'input è conforme allo schema fornito.

Per altre informazioni, vedere schema JSON.

Proprietà dei parametri

Tipo:String
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

SchemaString
Posizione:2
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-SchemaFile

Specifica un file di schema usato per convalidare l'input JSON. Se usato, il Test-Json restituisce $true solo se l'input JSON è conforme allo schema definito nel file specificato dal parametro SchemaFile.

Per altre informazioni, vedere schema JSON.

Proprietà dei parametri

Tipo:String
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

SchemaFile
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

CommonParameters

Questo cmdlet supporta i parametri comuni: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Per altre informazioni, vedi about_CommonParameters.

Input

String

È possibile inviare tramite pipe una stringa JSON a Test-Json.

Output

Boolean

Note

Il Test-Json cmdlet viene implementato utilizzando la classe NJsonSchema.

A partire da PowerShell 6, PowerShell usa gli assembly Newtonsoft.Json per tutte le funzioni JSON. L'implementazione di Newtonsoft include diverse estensioni allo standard JSON, ad esempio il supporto per i commenti e l'uso di virgolette singole. Per un elenco completo delle funzionalità, vedere la documentazione di Newtonsoft all'indirizzo https://www.newtonsoft.com/json.