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.