Test-Json
Test of een tekenreeks een geldig JSON-document is
Syntaxis
		JsonString (Standaard)
	 
	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>]
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 -ErrorAction SilentlyContinue
False
In dit voorbeeld gebruiken we de parameter ErrorAction om het foutbericht te onderdrukken. Zonder deze parameter voert de opdracht ook een fout uit 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
					JsonString 
					
				 
				| Position: | 0 | 
| Verplicht: | True | 
| Waarde uit pijplijn: | True | 
| Waarde uit pijplijn op eigenschapsnaam: | False | 
| Waarde van resterende argumenten: | False | 
					JsonStringWithSchemaString 
					
				    
				| Position: | 0 | 
| Verplicht: | True | 
| Waarde uit pijplijn: | True | 
| Waarde uit pijplijn op eigenschapsnaam: | False | 
| Waarde van resterende argumenten: | False | 
					JsonStringWithSchemaFile 
					
				    
				| Position: | 0 | 
| Verplicht: | True | 
| Waarde uit pijplijn: | True | 
| Waarde uit pijplijn op eigenschapsnaam: | False | 
| Waarde van resterende argumenten: | False | 
-LiteralPath 
		Hiermee geeft u een pad naar een JSON-bestand. De waarde van LiteralPath- wordt precies gebruikt zoals deze is getypt. Er worden geen tekens geïnterpreteerd als jokertekens. Als het pad escape-tekens bevat, zet het dan tussen enkele aanhalingstekens. Enkele aanhalingstekens zorgen ervoor dat PowerShell geen tekens als escapesequenties interpreteert.
Deze parameter is toegevoegd in PowerShell 7.4.
Parametereigenschappen
| Type: | String | 
| Default value: | None | 
| Ondersteunt jokertekens: | False | 
| DontShow: | False | 
| Aliassen: | PSPath, LP | 
Parametersets
					JsonLiteralPath 
					
				  
				| Position: | 0 | 
| Verplicht: | True | 
| Waarde uit pijplijn: | False | 
| Waarde uit pijplijn op eigenschapsnaam: | True | 
| Waarde van resterende argumenten: | False | 
					JsonLiteralPathWithSchemaString 
					
				     
				| Position: | 0 | 
| Verplicht: | True | 
| Waarde uit pijplijn: | False | 
| Waarde uit pijplijn op eigenschapsnaam: | True | 
| Waarde van resterende argumenten: | False | 
					JsonLiteralPathWithSchemaFile 
					
				     
				| Position: | 0 | 
| Verplicht: | True | 
| Waarde uit pijplijn: | False | 
| Waarde uit pijplijn op eigenschapsnaam: | True | 
| Waarde van resterende argumenten: | False | 
-Options
Standaard biedt Test-Json geen ondersteuning voor JSON met opmerkingen of volgkomma's. Met deze parameter kunt u opties opgeven om het standaardgedrag te wijzigen. De volgende opties zijn beschikbaar:
- IgnoreComments
- AllowTrailingCommas
Deze parameter is toegevoegd in PowerShell 7.5.0-preview.4.
Parametereigenschappen
| Type: | String[] | 
| Default value: | None | 
| Geaccepteerde waarden: | IgnoreComments, AllowTrailingCommas | 
| Ondersteunt jokertekens: | False | 
| DontShow: | False | 
Parametersets
(All)
| Position: | Named | 
| Verplicht: | False | 
| Waarde uit pijplijn: | False | 
| Waarde uit pijplijn op eigenschapsnaam: | False | 
| Waarde van resterende argumenten: | False | 
-Path
Hiermee geeft u het pad naar een JSON-bestand. Met deze cmdlet krijgt u het item op de opgegeven locatie. Jokertekens zijn toegestaan, maar het patroon moet worden omgezet in één bestand.
Deze parameter is toegevoegd in PowerShell 7.4.
Parametereigenschappen
| Type: | String | 
| Default value: | None | 
| Ondersteunt jokertekens: | True | 
| DontShow: | False | 
Parametersets
					JsonPath 
					
				 
				| Position: | 0 | 
| Verplicht: | True | 
| Waarde uit pijplijn: | False | 
| Waarde uit pijplijn op eigenschapsnaam: | True | 
| Waarde van resterende argumenten: | False | 
					JsonPathWithSchemaString 
					
				    
				| Position: | 0 | 
| Verplicht: | True | 
| Waarde uit pijplijn: | False | 
| Waarde uit pijplijn op eigenschapsnaam: | True | 
| Waarde van resterende argumenten: | False | 
					JsonPathWithSchemaFile 
					
				    
				| Position: | 0 | 
| Verplicht: | True | 
| Waarde uit pijplijn: | False | 
| Waarde uit pijplijn op eigenschapsnaam: | True | 
| 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
					JsonStringWithSchemaString 
					
				    
				| Position: | 1 | 
| Verplicht: | True | 
| Waarde uit pijplijn: | False | 
| Waarde uit pijplijn op eigenschapsnaam: | False | 
| Waarde van resterende argumenten: | False | 
					JsonLiteralPathWithSchemaString 
					
				     
				| Position: | 1 | 
| Verplicht: | True | 
| Waarde uit pijplijn: | False | 
| Waarde uit pijplijn op eigenschapsnaam: | False | 
| Waarde van resterende argumenten: | False | 
					JsonPathWithSchemaString 
					
				    
				| Position: | 1 | 
| Verplicht: | True | 
| 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
					JsonStringWithSchemaFile 
					
				    
				| Position: | 1 | 
| Verplicht: | True | 
| Waarde uit pijplijn: | False | 
| Waarde uit pijplijn op eigenschapsnaam: | False | 
| Waarde van resterende argumenten: | False | 
					JsonLiteralPathWithSchemaFile 
					
				     
				| Position: | 1 | 
| Verplicht: | True | 
| Waarde uit pijplijn: | False | 
| Waarde uit pijplijn op eigenschapsnaam: | False | 
| Waarde van resterende argumenten: | False | 
					JsonPathWithSchemaFile 
					
				    
				| Position: | 1 | 
| Verplicht: | True | 
| 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
Sinds PowerShell 6 gebruikt PowerShell de Newtonsoft.Json-assembly's voor 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.
Vanaf PowerShell 7.4 gebruikt Test-JsonSystem.Text.Json- voor JSON-parsering en JsonSchema.NET voor schemavalidatie.
Met deze wijzigingen Test-Json:
- Biedt geen ondersteuning meer voor Concept 4-schema's
- Ondersteunt alleen strikt conforme JSON
Zie de tabel met verschillen in Migrate van Newtonsoft.Json naar System.Text.Jsonvoor een volledige lijst met verschillen tussen Newtonsoft.Json en System.Text.Json.
Zie de documentatie op JSON-Schema.orgvoor meer informatie over JSON-schemaspecificaties.