Freigeben über


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

String

Sie können eine JSON-Zeichenfolge an übergeben Test-Json.

Ausgaben

Boolean

Hinweise

Das Test-Json Cmdlet wird mithilfe der NJsonSchema-Klasse implementiert.