Test-Json
Testet, ob eine Zeichenfolge ein gültiges JSON-Dokument ist.
Syntax
Test-Json
[-Json] <string>
[[-Schema] <string>]
[<CommonParameters>]
Beschreibung
Das Test-Json
Cmdlet testet, ob eine Zeichenfolge ein gültiges JSON-Dokument (JavaScript Object Notation) ist, und kann dieses JSON-Dokument optional anhand eines bereitgestellten Schemas überprüfen.
Die überprüfte Zeichenfolge kann dann mit dem ConvertFrom-Json
Cmdlet 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 statt XML, um Daten für die Kommunikation zwischen Servern und webbasierten Apps zu serialisieren.
Das 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 die Eingabezeichenfolge ein gültiges JSON-Dokument ist.
"{'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 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 : 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 diesem Beispiel erhalten wir einen Fehler, da das Schema eine ganze Zahl für das Alter erwartet, aber die getestete JSON-Eingabe verwendet stattdessen einen Zeichenfolgenwert.
Weitere Informationen finden Sie unter JSON-Schema.
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 auch eine Zeichenfolge an übergeben Test-Json
.
Der Json-Parameter ist erforderlich.
Type: | String |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Schema
Gibt ein Schema an, mit dem die JSON-Eingabe überprüft werden soll. Wenn übergeben Test-Json
wird, wird überprüft, ob die Json-Eingabe der durch den Schema-Parameter angegebenen Spezifikation entspricht, und gibt nur zurück $True
, wenn die Eingabe dem angegebenen Schema entspricht.
Weitere Informationen finden Sie unter JSON-Schema.
Type: | String |
Position: | 2 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Eingaben
Sie können eine JSON-Zeichenfolge an übergeben Test-Json
.
Ausgaben
Boolean
Hinweise
Das Test-Json
Cmdlet wird mithilfe der NJsonSchema-Klasse implementiert.