Test-Json
Überprüft, ob es sich bei einer Zeichenfolge um ein gültiges JSON-Dokument handelt.
Syntax
__AllParameterSets (Standard)
Test-Json
[-Json] <String>
[<CommonParameters>]
SchemaString
Test-Json
[-Json] <String>
[[-Schema] <String>]
[<CommonParameters>]
SchemaFile
Test-Json
[-Json] <String>
[-SchemaFile <String>]
[<CommonParameters>]
Beschreibung
Das cmdlet Test-Json testet, ob es sich bei einer Zeichenfolge um ein gültiges JSON-Dokument (JavaScript Object Notation) handelt und optional das JSON-Dokument anhand eines bereitgestellten Schemas überprüfen kann.
Die überprüfte Zeichenfolge kann dann mit dem Cmdlet ConvertFrom-Json verwendet werden, um eine JSON-formatierte Zeichenfolge in ein JSON-Objekt zu konvertieren, das einfach in PowerShell verwaltet oder an ein anderes Programm oder Webdienst gesendet wird, das auf JSON-Eingaben zugreift.
Viele Websites verwenden JSON anstelle von XML, um Daten für die Kommunikation zwischen Servern und webbasierten Apps zu serialisieren.
Dieses Cmdlet wurde in PowerShell 6.1 eingeführt.
Beispiele
Beispiel 1: Testen, ob ein Objekt gültiger JSON-Code ist
In diesem Beispiel wird getestet, ob es sich bei der Eingabezeichenfolge um ein gültiges JSON-Dokument handelt.
'{"name": "Ashley", "age": 25}' | Test-Json
True
Beispiel 2: Testen eines Objekts anhand eines bereitgestellten Schemas
In diesem Beispiel wird eine Zeichenfolge mit einem JSON-Schema verwendet und mit einer Eingabezeichenfolge verglichen.
$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 diesem Beispiel wird ein Fehler angezeigt, da das Schema eine ganze Zahl für Alter erwartet, aber die von uns getestete JSON-Eingabe verwendet stattdessen einen Zeichenfolgenwert.
Weitere Informationen finden Sie unter JSON-Schema-.
Beispiel 3: Testen eines Objekts anhand eines Schemas aus datei
Das JSON-Schema kann mithilfe $ref Schlüsselworts auf Definitionen verweisen. Der $ref kann zu einem URI aufgelöst werden, der auf eine andere Datei verweist. Der parameter SchemaFile akzeptiert Literalpfad zur JSON-Schemadatei und ermöglicht es JSON-Dateien, anhand solcher Schemas zu überprüfen.
In diesem Beispiel verweist die schema.json Datei auf 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
Weitere Informationen finden Sie unter Strukturieren eines komplexen Schemas.
Parameter
-Json
Gibt die JSON-Zeichenfolge an, die auf Gültigkeit getestet werden soll. Geben Sie eine Variable ein, die die Zeichenfolge enthält, oder geben Sie einen Befehl oder Ausdruck ein, der die Zeichenfolge abruft. Sie können eine Zeichenfolge auch an Test-Json weiterleiten.
Der parameter JSON- ist erforderlich.
Parametereigenschaften
| Typ: | String |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | 1 |
| Obligatorisch: | True |
| Wert aus Pipeline: | True |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Schema
Gibt ein Schema an, mit dem die JSON-Eingabe überprüft werden soll. Wenn dies übergeben wird, überprüft Test-Json, dass die JSON-Eingabe der vom parameter Schema angegebenen Spezifikation entspricht, und gibt $true nur zurück, wenn die Eingabe dem angegebenen Schema entspricht.
Weitere Informationen finden Sie unter JSON-Schema-.
Parametereigenschaften
| Typ: | String |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
SchemaString
| Position: | 2 |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-SchemaFile
Gibt eine Schemadatei an, die zum Überprüfen der JSON-Eingabe verwendet wird. Bei Verwendung gibt die Test-Json nur dann $true zurück, wenn die JSON-Eingabe dem schema entspricht, das in der durch den Parameter SchemaFile angegebenen Datei definiert ist.
Weitere Informationen finden Sie unter JSON-Schema-.
Parametereigenschaften
| Typ: | String |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
SchemaFile
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
CommonParameters
Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.
Eingaben
String
Sie können eine JSON-Zeichenfolge an dieses Cmdlet weiterleiten.
Ausgaben
Boolean
Dieses Cmdlet gibt $true zurück, wenn der JSON-Code gültig ist und andernfalls $false.
Hinweise
Das Test-Json Cmdlet wird mithilfe der NJsonSchema-Klasse implementiert.
Seit PowerShell 6 verwendet PowerShell die Newtonsoft.Json-Assemblys für alle JSON-Funktionen. Newtonsofts Implementierung enthält mehrere Erweiterungen für den JSON-Standard, z. B. Unterstützung für Kommentare und Die Verwendung einzelner Anführungszeichen. Eine vollständige Liste der Features finden Sie in der Newtonsoft-Dokumentation unter https://www.newtonsoft.com/json.