Delen via


Test-Json

Test of een tekenreeks een geldig JSON-document is

Syntax

__AllParameterSets (Standaard)

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

SchemaString

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

SchemaFile

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

Description

De Test-Json cmdlet test of een tekenreeks een geldig JSON-document (JavaScript Object Notation) is en optioneel kan controleren of het JSON-document in een opgegeven schema is.

De geverifieerde tekenreeks kan vervolgens worden gebruikt met de cmdlet ConvertFrom-Json een tekenreeks met JSON-indeling converteert naar een JSON-object, dat eenvoudig wordt beheerd in PowerShell of wordt verzonden naar een ander programma of een andere webservice die toegang heeft tot JSON-invoer.

Veel websites gebruiken JSON in plaats van XML om gegevens te serialiseren voor communicatie tussen servers en web-apps.

Deze cmdlet is geïntroduceerd in PowerShell 6.1

Voorbeelden

Voorbeeld 1: Testen of een object geldige JSON is

In dit voorbeeld wordt getest of de invoertekenreeks een geldig JSON-document is.

'{"name": "Ashley", "age": 25}' | Test-Json
True

Voorbeeld 2: Een object testen op basis van een opgegeven schema

In dit voorbeeld wordt een tekenreeks met een JSON-schema gebruikt en vergeleken met een invoertekenreeks.

$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 dit voorbeeld krijgen we een fout omdat in het schema een geheel getal wordt verwacht voor leeftijd, maar de JSON-invoer die we hebben getest, gebruikt in plaats daarvan een tekenreekswaarde.

Zie JSON-schemavoor meer informatie.

Voorbeeld 3: Een object testen op basis van een schema uit een bestand

JSON-schema kan verwijzen naar definities met behulp van $ref trefwoord. De $ref kan worden omgezet in een URI die verwijst naar een ander bestand. De parameter SchemaFile accepteert het letterlijke pad naar het JSON-schemabestand en staat toe dat JSON-bestanden worden gevalideerd op basis van dergelijke schema's.

In dit voorbeeld verwijst het schema.json bestand naar 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

Zie Een complex schema structurerenvoor meer informatie.

Parameters

-Json

Hiermee geeft u de JSON-tekenreeks op die moet worden getest op geldigheid. Voer een variabele in die de tekenreeks bevat of typ een opdracht of expressie die de tekenreeks ophaalt. U kunt ook een tekenreeks doorspezen naar Test-Json.

De parameter Json is vereist.

Parametereigenschappen

Type:String
Default value:None
Ondersteunt jokertekens:False
DontShow:False

Parametersets

(All)
Position:1
Verplicht:True
Waarde uit pijplijn:True
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

-Schema

Hiermee geeft u een schema op waarmee de JSON-invoer moet worden gevalideerd. Als dit wordt doorgegeven, valideert Test-Json of de JSON-invoer voldoet aan de specificatie die is opgegeven door de parameter Schema en alleen $true retourneert als de invoer voldoet aan het opgegeven schema.

Zie JSON-schemavoor meer informatie.

Parametereigenschappen

Type:String
Default value:None
Ondersteunt jokertekens:False
DontShow:False

Parametersets

SchemaString
Position:2
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

-SchemaFile

Hiermee geeft u een schemabestand op dat wordt gebruikt om de JSON-invoer te valideren. Wanneer deze wordt gebruikt, retourneert de Test-Json alleen $true als de JSON-invoer voldoet aan het schema dat is gedefinieerd in het bestand dat is opgegeven door de parameter SchemaFile.

Zie JSON-schemavoor meer informatie.

Parametereigenschappen

Type:String
Default value:None
Ondersteunt jokertekens:False
DontShow:False

Parametersets

SchemaFile
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

CommonParameters

Deze cmdlet ondersteunt de algemene parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction en -WarningVariable. Zie about_CommonParametersvoor meer informatie.

Invoerwaarden

String

U kunt een JSON-tekenreeks naar deze cmdlet doorsluisen.

Uitvoerwaarden

Boolean

Deze cmdlet retourneert $true als de JSON geldig is en anders $false.

Notities

De Test-Json cmdlet wordt geïmplementeerd met behulp van de NJsonSchema Class.

Sinds PowerShell 6 gebruikt PowerShell de Newtonsoft.Json-assembly's voor alle JSON-functies. De implementatie van Newtonsoft bevat verschillende extensies voor de JSON-standaard, zoals ondersteuning voor opmerkingen en het gebruik van enkele aanhalingstekens. Zie de Newtonsoft-documentatie op https://www.newtonsoft.com/jsonvoor een volledige lijst met functies.