Test-Json
Verifica se una stringa è un documento JSON valido
Sintassi
Test-Json
[-Json] <String>
[<CommonParameters>]
Test-Json
[-Json] <String>
[[-Schema] <String>]
[<CommonParameters>]
Test-Json
[-Json] <String>
[-SchemaFile <String>]
[<CommonParameters>]
Descrizione
Il Test-Json
cmdlet verifica se una stringa è un documento JSON (JavaScript Object Notation) valido e può facoltativamente verificare che il documento JSON sia in base a uno schema specificato.
La stringa verificata può quindi essere usata con il ConvertFrom-Json
cmdlet converte una stringa in formato JSON in un oggetto JSON, che è facilmente gestita in PowerShell o inviata 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 applicazioni 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 su 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:
Line |
35 | '{"name": "Ashley", "age": "25"}' | Test-Json -Schema $schema
| ~~~~~~~~~~~~~~~~~~~~~~~~~
| IntegerExpected: #/age
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 la $ref
parola chiave . Può $ref
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 in base a tali schemi.
In questo esempio il schema.json
file fa riferimento a 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
Per altre informazioni, vedere Strutturazione di uno schema complesso.
Parametri
-Json
Specifica la stringa JSON per verificare la validità. Immettere una variabile che contiene la stringa o digitare un comando o un'espressione che ottiene la stringa. È anche possibile inviare tramite pipe una stringa a Test-Json
.
Il parametro Json è obbligatorio.
Type: | String |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Schema
Specifica uno schema per convalidare l'input JSON. Se passato, Test-Json
verifica che l'input JSON sia conforme alla specifica specificata dal parametro Schema e restituisca $true
solo se l'input è conforme allo schema specificato.
Per altre informazioni, vedere Schema JSON.
Type: | String |
Position: | 2 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SchemaFile
Specifica un file di schema usato per convalidare l'input JSON. Se usato, restituisce Test-Json
$true
solo se l'input JSON è conforme allo schema definito nel file specificato dal parametro SchemaFile .
Per altre informazioni, vedere Schema JSON.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Input
È possibile inviare tramite pipe una stringa JSON a questo cmdlet.
Output
Boolean
Questo cmdlet restituisce $true
se il codice JSON è valido e in caso contrario $false
.
Note
Il Test-Json
cmdlet viene implementato usando 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.