Test-Json
Testar om en sträng är ett giltigt JSON-dokument
Syntax
		JsonString (Standard)
	 
	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
Cmdleten Test-Json testar om en sträng är ett giltigt JSON-dokument (JavaScript Object Notation) och kan också verifiera JSON-dokumentet mot ett angivet schema.
Den verifierade strängen kan sedan användas med cmdleten ConvertFrom-Json konvertera en JSON-formaterad sträng till ett JSON-objekt, som enkelt hanteras i PowerShell eller skickas till ett annat program eller en annan webbtjänst som har åtkomst till JSON-indata.
Många webbplatser använder JSON i stället för XML för att serialisera data för kommunikation mellan servrar och webbaserade appar.
Den här cmdleten introducerades i PowerShell 6.1
Exempel
Exempel 1: Testa om ett objekt är giltigt JSON
I det här exemplet testas om indatasträngen är ett giltigt JSON-dokument.
'{"name": "Ashley", "age": 25}' | Test-Json
True
Exempel 2: Testa ett objekt mot ett angivet schema
Det här exemplet tar en sträng som innehåller ett JSON-schema och jämför den med en indatasträng.
$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
I det här exemplet använder vi parametern ErrorAction för att utelämna felmeddelandet. Utan den här parametern utlöser kommandot också ett fel eftersom schemat förväntar sig ett heltal för ålder , men JSON-indata som vi testade använder ett strängvärde i stället.
Mer information finns i JSON-schema.
Exempel 3: Testa ett objekt mot ett schema från en fil
JSON-schema kan referera till definitioner med hjälp av $ref nyckelord. 
              $ref kan matcha till en URI som refererar till en annan fil. Parametern SchemaFile accepterar literalsökvägen till JSON-schemafilen och tillåter att JSON-filer verifieras mot sådana scheman.
I det här exemplet refererar schema.json-filen till 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
Mer information finns i Strukturera ett komplext schema.
Parametrar
-Json
Anger JSON-strängen som ska testas för giltighet. Ange en variabel som innehåller strängen eller skriv ett kommando eller uttryck som hämtar strängen. Du kan också skicka en sträng till Test-Json.
Parametern Json krävs.
Parameteregenskaper
| Typ: | String | 
| Standardvärde: | None | 
| Stöder jokertecken: | False | 
| DontShow: | False | 
Parameteruppsättningar
					JsonString 
					
				 
				| Position: | 0 | 
| Obligatorisk: | True | 
| Värde från pipeline: | True | 
| Värde från pipeline efter egenskapsnamn: | False | 
| Värde från återstående argument: | False | 
					JsonStringWithSchemaString 
					
				    
				| Position: | 0 | 
| Obligatorisk: | True | 
| Värde från pipeline: | True | 
| Värde från pipeline efter egenskapsnamn: | False | 
| Värde från återstående argument: | False | 
					JsonStringWithSchemaFile 
					
				    
				| Position: | 0 | 
| Obligatorisk: | True | 
| Värde från pipeline: | True | 
| Värde från pipeline efter egenskapsnamn: | False | 
| Värde från återstående argument: | False | 
-LiteralPath 
		Anger en sökväg till en JSON-fil. Värdet för LiteralPath- används exakt som det skrivs. Inga tecken tolkas som wildcards. Om sökvägen innehåller escape-tecken omger du den med enkla citattecken. Enkla citattecken gör att PowerShell inte tolkar några tecken som escape-sekvenser.
Den här parametern lades till i PowerShell 7.4.
Parameteregenskaper
| Typ: | String | 
| Standardvärde: | None | 
| Stöder jokertecken: | False | 
| DontShow: | False | 
| Alias: | PSPath, SP | 
Parameteruppsättningar
					JsonLiteralPath 
					
				  
				| Position: | 0 | 
| Obligatorisk: | True | 
| Värde från pipeline: | False | 
| Värde från pipeline efter egenskapsnamn: | True | 
| Värde från återstående argument: | False | 
					JsonLiteralPathWithSchemaString 
					
				     
				| Position: | 0 | 
| Obligatorisk: | True | 
| Värde från pipeline: | False | 
| Värde från pipeline efter egenskapsnamn: | True | 
| Värde från återstående argument: | False | 
					JsonLiteralPathWithSchemaFile 
					
				     
				| Position: | 0 | 
| Obligatorisk: | True | 
| Värde från pipeline: | False | 
| Värde från pipeline efter egenskapsnamn: | True | 
| Värde från återstående argument: | False | 
-Options
Som standard stöder Test-Json inte JSON som innehåller kommentarer eller avslutande kommatecken. Med den här parametern kan du ange alternativ för att ändra standardbeteendet. Följande alternativ är tillgängliga:
- IgnoreComments
- AllowTrailingCommas
Den här parametern lades till i PowerShell 7.5.0-preview.4.
Parameteregenskaper
| Typ: | String[] | 
| Standardvärde: | None | 
| Godkända värden: | IgnoreComments, AllowTrailingCommas | 
| Stöder jokertecken: | False | 
| DontShow: | False | 
Parameteruppsättningar
(All)
| Position: | Named | 
| Obligatorisk: | False | 
| Värde från pipeline: | False | 
| Värde från pipeline efter egenskapsnamn: | False | 
| Värde från återstående argument: | False | 
-Path
Anger sökvägen till en JSON-fil. Den här cmdleten hämtar objektet på den angivna platsen. Jokertecken tillåts men mönstret måste matcha till en enda fil.
Den här parametern lades till i PowerShell 7.4.
Parameteregenskaper
| Typ: | String | 
| Standardvärde: | None | 
| Stöder jokertecken: | True | 
| DontShow: | False | 
Parameteruppsättningar
					JsonPath 
					
				 
				| Position: | 0 | 
| Obligatorisk: | True | 
| Värde från pipeline: | False | 
| Värde från pipeline efter egenskapsnamn: | True | 
| Värde från återstående argument: | False | 
					JsonPathWithSchemaString 
					
				    
				| Position: | 0 | 
| Obligatorisk: | True | 
| Värde från pipeline: | False | 
| Värde från pipeline efter egenskapsnamn: | True | 
| Värde från återstående argument: | False | 
					JsonPathWithSchemaFile 
					
				    
				| Position: | 0 | 
| Obligatorisk: | True | 
| Värde från pipeline: | False | 
| Värde från pipeline efter egenskapsnamn: | True | 
| Värde från återstående argument: | False | 
-Schema
Anger ett schema som JSON-indata ska verifieras mot. Om det skickas verifierar Test-Json att JSON-indata överensstämmer med specifikationen som anges av parametern Schema och returnerar endast $true om indata överensstämmer med det angivna schemat.
Mer information finns i JSON-schema.
Parameteregenskaper
| Typ: | String | 
| Standardvärde: | None | 
| Stöder jokertecken: | False | 
| DontShow: | False | 
Parameteruppsättningar
					JsonStringWithSchemaString 
					
				    
				| Position: | 1 | 
| Obligatorisk: | True | 
| Värde från pipeline: | False | 
| Värde från pipeline efter egenskapsnamn: | False | 
| Värde från återstående argument: | False | 
					JsonLiteralPathWithSchemaString 
					
				     
				| Position: | 1 | 
| Obligatorisk: | True | 
| Värde från pipeline: | False | 
| Värde från pipeline efter egenskapsnamn: | False | 
| Värde från återstående argument: | False | 
					JsonPathWithSchemaString 
					
				    
				| Position: | 1 | 
| Obligatorisk: | True | 
| Värde från pipeline: | False | 
| Värde från pipeline efter egenskapsnamn: | False | 
| Värde från återstående argument: | False | 
-SchemaFile 
		Anger en schemafil som används för att verifiera JSON-indata. När den används returnerar Test-Json endast $true om JSON-indata överensstämmer med schemat som definierats i filen som anges av parametern SchemaFile.
Mer information finns i JSON-schema.
Parameteregenskaper
| Typ: | String | 
| Standardvärde: | None | 
| Stöder jokertecken: | False | 
| DontShow: | False | 
Parameteruppsättningar
					JsonStringWithSchemaFile 
					
				    
				| Position: | 1 | 
| Obligatorisk: | True | 
| Värde från pipeline: | False | 
| Värde från pipeline efter egenskapsnamn: | False | 
| Värde från återstående argument: | False | 
					JsonLiteralPathWithSchemaFile 
					
				     
				| Position: | 1 | 
| Obligatorisk: | True | 
| Värde från pipeline: | False | 
| Värde från pipeline efter egenskapsnamn: | False | 
| Värde från återstående argument: | False | 
					JsonPathWithSchemaFile 
					
				    
				| Position: | 1 | 
| Obligatorisk: | True | 
| Värde från pipeline: | False | 
| Värde från pipeline efter egenskapsnamn: | False | 
| Värde från återstående argument: | False | 
CommonParameters
Den här cmdleten stöder vanliga parametrar: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction och -WarningVariable. Mer information finns i about_CommonParameters.
Indata
String
Du kan skicka en JSON-sträng till den här cmdleten.
Utdata
Boolean
Den här cmdleten returnerar $true om JSON är giltig och annars $false.
Kommentarer
Sedan PowerShell 6 använder PowerShell Newtonsoft.Json-sammansättningarna för JSON-funktioner. Newtonsofts implementering innehåller flera tillägg till JSON-standarden, till exempel stöd för kommentarer och användning av enkla citattecken. En fullständig lista över funktioner finns i Newtonsoft-dokumentationen på https://www.newtonsoft.com/json.
Från och med PowerShell 7.4 använder Test-JsonSystem.Text.Json för JSON-parsning och JsonSchema.NET för schemaverifiering.
Med dessa ändringar Test-Json:
- Stöder inte längre utkast 4-scheman
- Stöder endast strikt överensstämmande JSON
En fullständig lista över skillnader mellan Newtonsoft.Json och System.Text.Json finns i tabell med skillnader i Migrera från Newtonsoft.Json till System.Text.Json.
Mer information om JSON-schemaspecifikationer finns i dokumentationen på JSON-Schema.org.