Megosztás a következőn keresztül:


Test-Json

Annak vizsgálata, hogy egy sztring érvényes JSON-dokumentum-e

Syntax

JsonString (Alapértelmezett)

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

A Test-Json parancsmag ellenőrzi, hogy a sztring érvényes JavaScript Object Notation -dokumentum-e, és opcionálisan ellenőrizheti, hogy a JSON-dokumentum egy megadott sémán van-e.

Az ellenőrzött sztring ezután használható a ConvertFrom-Json parancsmaggal, amely JSON-formátumú sztringet alakít át JSON-objektummá, amely könnyen kezelhető a PowerShellben, vagy elküldhető egy másik programnak vagy webszolgáltatásnak, amely hozzáfér a JSON-bemenethez.

Sok webhely az XML helyett JSON-t használ az adatok szerializálására a kiszolgálók és a webalapú alkalmazások közötti kommunikációhoz.

Ez a parancsmag a PowerShell 6.1-ben lett bevezetve

Példák

1. példa: Annak ellenőrzése, hogy egy objektum érvényes JSON-e

Ez a példa azt vizsgálja, hogy a bemeneti sztring érvényes JSON-dokumentum-e.

'{"name": "Ashley", "age": 25}' | Test-Json
True

2. példa: Objektum tesztelése egy megadott sémán

Ez a példa egy JSON-sémát tartalmazó sztringet vesz fel, és összehasonlítja azt egy bemeneti sztringgel.

$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

Ebben a példában az ErrorAction paramétert használjuk a hibaüzenet letiltásához. A paraméter nélkül a parancs hibát is ad ki, mert a séma egy egész számot vár az életkorhoz , de a tesztelt JSON-bemenet inkább sztringértéket használ.

További információ: JSON-séma.

3. példa: Objektum tesztelése fájlból származó sémán

A JSON-séma $ref kulcsszó használatával hivatkozhat definíciókra. A $ref feloldhatók egy másik fájlra hivatkozó URI-val. A SchemaFile paraméter elfogadja a JSON-sémafájl literális elérési útját, és lehetővé teszi a JSON-fájlok érvényesítését az ilyen sémákon.

Ebben a példában a schema.json fájl hivatkozik 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

További információ: Összetett sémastrukturálása.

Paraméterek

-Json

Az érvényesség ellenőrzéséhez használt JSON-sztringet adja meg. Adjon meg egy változót, amely tartalmazza a sztringet, vagy írjon be egy parancsot vagy kifejezést, amely lekéri a sztringet. Karakterláncot is továbbíthat a Test-Json-ra.

A Json paraméter szükséges.

Paramétertulajdonságok

Típus:String
Alapértelmezett érték:None
Támogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

JsonString
Position:0
Kötelező:True
Folyamatból származó érték:True
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False
JsonStringWithSchemaString
Position:0
Kötelező:True
Folyamatból származó érték:True
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False
JsonStringWithSchemaFile
Position:0
Kötelező:True
Folyamatból származó érték:True
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False

-LiteralPath

Egy JSON-fájl elérési útját adja meg. A LiteralPath értékét pontosan a beírt módon használja a rendszer. A rendszer egyetlen karaktert sem értelmez helyettesítő karakterként. Ha az elérési útvonal escape karaktereket tartalmaz, tedd azt egyes idézőjelek közé. Az egyes idézőjelek azt mondják a PowerShellnek, hogy egyetlen karaktert se értelmezzen escape szekvenciaként.

Ez a paraméter a PowerShell 7.4-ben lett hozzáadva.

Paramétertulajdonságok

Típus:String
Alapértelmezett érték:None
Támogatja a helyettesítő karaktereket:False
DontShow:False
Aliasok:PSPath, LP

Paraméterkészletek

JsonLiteralPath
Position:0
Kötelező:True
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:True
Fennmaradó argumentumokból származó érték:False
JsonLiteralPathWithSchemaString
Position:0
Kötelező:True
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:True
Fennmaradó argumentumokból származó érték:False
JsonLiteralPathWithSchemaFile
Position:0
Kötelező:True
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:True
Fennmaradó argumentumokból származó érték:False

-Options

Alapértelmezés szerint a Test-Json nem támogatja a megjegyzéseket vagy záró vesszőket tartalmazó JSON-t. Ez a paraméter lehetővé teszi az alapértelmezett viselkedés módosítására vonatkozó beállítások megadását. A következő lehetőségek érhetők el:

  • IgnoreComments
  • AllowTrailingCommas

Ez a paraméter a PowerShell 7.5.0-preview.4-ben lett hozzáadva.

Paramétertulajdonságok

Típus:

String[]

Alapértelmezett érték:None
Elfogadott értékek:IgnoreComments, AllowTrailingCommas
Támogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

(All)
Position:Named
Kötelező:False
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False

-Path

Megadja egy JSON-fájl elérési útját. Ez a parancsmag lekéri az elemet a megadott helyen. A helyettesítő karakterek használata engedélyezett, de a mintát egyetlen fájlra kell feloldani.

Ez a paraméter a PowerShell 7.4-ben lett hozzáadva.

Paramétertulajdonságok

Típus:String
Alapértelmezett érték:None
Támogatja a helyettesítő karaktereket:True
DontShow:False

Paraméterkészletek

JsonPath
Position:0
Kötelező:True
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:True
Fennmaradó argumentumokból származó érték:False
JsonPathWithSchemaString
Position:0
Kötelező:True
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:True
Fennmaradó argumentumokból származó érték:False
JsonPathWithSchemaFile
Position:0
Kötelező:True
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:True
Fennmaradó argumentumokból származó érték:False

-Schema

Egy sémát ad meg a JSON-bemenet ellenőrzéséhez. Ha megfelel, Test-Json ellenőrzi, hogy a JSON-bemenet megfelel-e a Séma paraméter által megadott specifikációnak, és csak akkor adja vissza a $true, ha a bemenet megfelel a megadott sémának.

További információ: JSON-séma.

Paramétertulajdonságok

Típus:String
Alapértelmezett érték:None
Támogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

JsonStringWithSchemaString
Position:1
Kötelező:True
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False
JsonLiteralPathWithSchemaString
Position:1
Kötelező:True
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False
JsonPathWithSchemaString
Position:1
Kötelező:True
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False

-SchemaFile

A JSON-bemenet ellenőrzéséhez használt sémafájlt adja meg. Használat esetén a Test-Json csak akkor ad vissza $true, ha a JSON-bemenet megfelel a SchemaFile paraméter által megadott fájlban meghatározott sémának.

További információ: JSON-séma.

Paramétertulajdonságok

Típus:String
Alapértelmezett érték:None
Támogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

JsonStringWithSchemaFile
Position:1
Kötelező:True
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False
JsonLiteralPathWithSchemaFile
Position:1
Kötelező:True
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False
JsonPathWithSchemaFile
Position:1
Kötelező:True
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False

CommonParameters

Ez a parancsmag a következő gyakori paramétereket támogatja: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction és -WarningVariable. További információért lásd about_CommonParameters.

Bevitelek

String

Ehhez a parancsmaghoz JSON-sztringet csövezhet.

Kimenetek

Boolean

Ez a parancsmag $true ad vissza, ha a JSON érvényes, és egyébként $false.

Jegyzetek

A PowerShell a PowerShell a Newtonsoft.Json szerelvényeket használja JSON-függvényekhez. A Newtonsoft implementációja számos JSON-bővítményt tartalmaz, például a megjegyzések támogatását és az egyszeri idézőjelek használatát. A funkciók teljes listáját a Newtonsoft dokumentációjában találja https://www.newtonsoft.com/json.

A PowerShell 7.4-től kezdődően Test-JsonSystem.Text.Json használ JSON-elemzéshez, és JsonSchema.NET a sémaérvényesítéshez. Ezekkel a módosításokkal Test-Json:

  • A továbbiakban nem támogatja a Piszkozat 4 sémáit
  • Csak a szigorúan megfelelő JSON-t támogatja

A Newtonsoft.Json és a System.Text.Json közötti különbségek teljes listáját a Migrálás Newtonsoft.Json-ból System.Text.Json.

A JSON-séma specifikációiról további információt a JSON-Schema.orgdokumentációjában talál.