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
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.
Verwante koppelingen
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor