Test-Json

Test of een tekenreeks een geldig JSON-document is

Syntax

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

Description

Met de Test-Json cmdlet wordt getest of een tekenreeks een geldig JSON-document (JavaScript Object Notation) is en optioneel kan worden gecontroleerd of het JSON-document in een opgegeven schema is.

De geverifieerde tekenreeks kan vervolgens worden gebruikt met de ConvertFrom-Json cmdlet om een tekenreeks met JSON-indeling te converteren 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-schema voor meer informatie.

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

JSON-schema kan verwijzen naar definities met trefwoorden $ref . De $ref fout 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 structureren voor 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 doorsluisen naar Test-Json.

De Json-parameter is vereist.

Type:String
Position:1
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Schema

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

Zie JSON-schema voor meer informatie.

Type:String
Position:2
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SchemaFile

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

Zie JSON-schema voor meer informatie.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

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-klasse.

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.