Freigeben über


Test-Json

Überprüft, ob es sich bei einer Zeichenfolge um ein gültiges JSON-Dokument handelt.

Syntax

JsonString (Standardwert)

Test-Json
    [-Json] <String>
    [-Options <String[]>]
    [<CommonParameters>]

JsonStringWithSchemaString

Test-Json
    [-Json] <String>
    [-Schema] <String>
    [-Options <String[]>]
    [<CommonParameters>]

JsonStringWithSchemaFile

Test-Json
    [-Json] <String>
    -SchemaFile <String>
    [-Options <String[]>]
    [<CommonParameters>]

JsonPath

Test-Json
    -Path <String>
    [-Options <String[]>]
    [<CommonParameters>]

JsonPathWithSchemaString

Test-Json
    [-Schema] <String>
    -Path <String>
    [-Options <String[]>]
    [<CommonParameters>]

JsonPathWithSchemaFile

Test-Json
    -Path <String>
    -SchemaFile <String>
    [-Options <String[]>]
    [<CommonParameters>]

JsonLiteralPath

Test-Json
    -LiteralPath <String>
    [-Options <String[]>]
    [<CommonParameters>]

JsonLiteralPathWithSchemaString

Test-Json
    [-Schema] <String>
    -LiteralPath <String>
    [-Options <String[]>]
    [<CommonParameters>]

JsonLiteralPathWithSchemaFile

Test-Json
    -LiteralPath <String>
    -SchemaFile <String>
    [-Options <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 -ErrorAction SilentlyContinue
False

In diesem Beispiel wird der ErrorAction-Parameter verwendet, um die Fehlermeldung zu unterdrücken. Ohne diesen Parameter gibt der Befehl auch einen Fehler aus, da das Schema eine ganze Zahl für das 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

JsonString
Position:0
Obligatorisch.:True
Wert aus Pipeline:True
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
JsonStringWithSchemaString
Position:0
Obligatorisch.:True
Wert aus Pipeline:True
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
JsonStringWithSchemaFile
Position:0
Obligatorisch.:True
Wert aus Pipeline:True
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-LiteralPath

Gibt einen Pfad zu einer JSON-Datei an. Der Wert LiteralPath- wird genau so verwendet, wie er eingegeben wird. Es werden keine Zeichen als Wildcards interpretiert. Wenn der Pfad Escapezeichen enthält, müssen Sie ihn in einfache Anführungszeichen einschließen. Einfache Anführungszeichen signalisieren PowerShell, dass keine Zeichen als Escapesequenzen interpretiert werden sollen.

Dieser Parameter wurde in PowerShell 7.4 hinzugefügt.

Parametereigenschaften

Typ:String
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False
Aliase:PSPath, EP

Parametersätze

JsonLiteralPath
Position:0
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False
JsonLiteralPathWithSchemaString
Position:0
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False
JsonLiteralPathWithSchemaFile
Position:0
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False

-Options

Standardmäßig unterstützt Test-Json JSON nicht, das Kommentare oder nachfolgende Kommas enthält. Mit diesem Parameter können Sie Optionen angeben, um das Standardverhalten zu ändern. Die folgenden Optionen sind verfügbar:

  • IgnoreComments
  • AllowTrailingCommas

Dieser Parameter wurde in PowerShell 7.5.0-preview.4 hinzugefügt.

Parametereigenschaften

Typ:

String[]

Standardwert:None
Zulässige Werte:IgnoreComments, AllowTrailingCommas
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Path

Gibt den Pfad zu einer JSON-Datei an. Dieses Cmdlet ruft das Element an der angegebenen Position ab. Wildcardzeichen sind zulässig, das Muster muss jedoch in eine einzelne Datei aufgelöst werden.

Dieser Parameter wurde in PowerShell 7.4 hinzugefügt.

Parametereigenschaften

Typ:String
Standardwert:None
Unterstützt Platzhalter:True
Nicht anzeigen:False

Parametersätze

JsonPath
Position:0
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False
JsonPathWithSchemaString
Position:0
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False
JsonPathWithSchemaFile
Position:0
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
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

JsonStringWithSchemaString
Position:1
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
JsonLiteralPathWithSchemaString
Position:1
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
JsonPathWithSchemaString
Position:1
Obligatorisch.:True
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

JsonStringWithSchemaFile
Position:1
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
JsonLiteralPathWithSchemaFile
Position:1
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
JsonPathWithSchemaFile
Position:1
Obligatorisch.:True
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

Seit PowerShell 6 verwendet PowerShell die Newtonsoft.Json-Assemblys für 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.

Ab PowerShell 7.4 verwendet Test-JsonSystem.Text.Json- für die JSON-Analyse und JsonSchema.NET für die Schemaüberprüfung. Mit diesen Änderungen Test-Json:

  • Unterstützt entwurfs 4-Schemas nicht mehr
  • Unterstützt nur streng konformes JSON

Eine vollständige Liste der Unterschiede zwischen Newtonsoft.Json und System.Text.Json finden Sie in der Tabelle der Unterschiede in Migrieren von Newtonsoft.Json zu System.Text.Json.

Weitere Informationen zu JSON-Schemaspezifikationen finden Sie in der Dokumentation unter JSON-Schema.org.