Test-Json

Testar om en sträng är ett giltigt JSON-dokument

Syntax

Test-Json
    [-Json] <String>
    [<CommonParameters>]
Test-Json
    [-Json] <String>
    [[-Schema] <String>]
    [<CommonParameters>]
Test-Json
    [-Json] <String>
    [-SchemaFile <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

Test-Json:
Line |
  35 |  '{"name": "Ashley", "age": "25"}' | Test-Json -Schema $schema
     |                                      ~~~~~~~~~~~~~~~~~~~~~~~~~
     | IntegerExpected: #/age
False

I det här exemplet får vi 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.

Typ:String
Position:1
Standardvärde:None
Obligatorisk:True
Godkänn pipeline-indata:True
Godkänn jokertecken: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.

Typ:String
Position:2
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken: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.

Typ:String
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

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

Cmdleten Test-Json implementeras med hjälp av NJsonSchema Class.

Sedan PowerShell 6 använder PowerShell Newtonsoft.Json-sammansättningarna för alla 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.