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.