Test-Json

Menguji apakah string adalah dokumen JSON yang valid

Sintaks

Test-Json
    [-Json] <String>
    [<CommonParameters>]
Test-Json
    [-Json] <string>
    [-Schema] <string>
    [<CommonParameters>]
Test-Json
    [-Json] <string>
    [-SchemaFile] <string>
    [<CommonParameters>]
Test-Json
    [-Path] <string>
    [<CommonParameters>]
Test-Json
    [-Path] <string>
    [-Schema] <string>
    [<CommonParameters>]
Test-Json
    [-Path] <string>
    [-SchemaFile] <string>
    [<CommonParameters>]
Test-Json
    [-LiteralPath] <string>
    [<CommonParameters>]
Test-Json
    [-LiteralPath] <string>
    [-Schema] <string>
    [<CommonParameters>]
Test-Json
    [-LiteralPath] <string>
    [-SchemaFile] <string>
    [<CommonParameters>]

Deskripsi

Test-Json Cmdlet menguji apakah string adalah dokumen JavaScript Object Notation (JSON) yang valid dan dapat secara opsional memverifikasi bahwa dokumen JSON terhadap skema yang disediakan.

String terverifikasi kemudian dapat digunakan dengan ConvertFrom-Json cmdlet mengonversi string berformat JSON ke objek JSON, yang mudah dikelola di PowerShell atau dikirim ke program atau layanan web lain yang mengakses input JSON.

Banyak situs web menggunakan JSON alih-alih XML untuk menserialisasikan data untuk komunikasi antara server dan aplikasi berbasis web.

Cmdlet ini diperkenalkan di PowerShell 6.1

Contoh

Contoh 1: Uji apakah objek adalah JSON yang valid

Contoh ini menguji apakah string input adalah dokumen JSON yang valid.

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

True

Contoh 2: Menguji objek terhadap skema yang disediakan

Contoh ini mengambil string yang berisi skema JSON dan membandingkannya dengan string input.

$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
     |                                      ~~~~~~~~~~~~~~~~~~~~~~~~~
     | The JSON is not valid with the schema: Value is "string" but should be "integer" at '/age'
False

Dalam contoh ini, kami mendapatkan kesalahan karena skema mengharapkan bilangan bulat untuk usia tetapi input JSON yang kami uji menggunakan nilai string sebagai gantinya.

Untuk informasi selengkapnya, lihat Skema JSON.

Contoh 3: Menguji objek terhadap skema dari file

Skema JSON dapat mereferensikan definisi menggunakan $ref kata kunci. $ref dapat mengatasi URI yang mereferensikan file lain. Parameter SchemaFile menerima jalur harfiah ke file skema JSON dan memungkinkan file JSON divalidasi terhadap skema tersebut.

Dalam contoh ini, file mereferensikan schema.jsondefinitions.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

Untuk informasi selengkapnya, lihat Menyusun skema yang kompleks.

Parameter

-Json

Menentukan string JSON yang akan diuji validitasnya. Masukkan variabel yang berisi string, atau ketik perintah atau ekspresi yang mendapatkan string. Anda juga dapat menyalurkan string ke Test-Json.

Parameter Json diperlukan.

Type:String
Position:1
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-LiteralPath

Menentukan jalur ke file JSON. Nilai LiteralPath digunakan persis seperti yang ditik. Tidak ada karakter yang ditafsirkan sebagai kartubebas. Jika jalur menyertakan karakter escape, sertakan dalam tanda kutip tunggal. Tanda kutip tunggal memberi tahu PowerShell untuk tidak menginterpretasikan karakter apa pun sebagai urutan escape.

Parameter ini ditambahkan di PowerShell 7.4.

Type:String
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Path

Menentukan jalur ke file JSON. Cmdlet ini mendapatkan item di lokasi yang ditentukan. Karakter kartubebas diizinkan tetapi pola harus diselesaikan ke satu file.

Parameter ini ditambahkan di PowerShell 7.4.

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:True

-Schema

Menentukan skema untuk memvalidasi input JSON. Jika diteruskan, Test-Json memvalidasi bahwa input JSON sesuai dengan spesifikasi yang ditentukan oleh parameter Skema dan mengembalikan $true hanya jika input sesuai dengan skema yang disediakan.

Untuk informasi selengkapnya, lihat Skema JSON.

Type:String
Position:2
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SchemaFile

Menentukan file skema yang digunakan untuk memvalidasi input JSON. Saat digunakan, Test-Json mengembalikan $true hanya jika input JSON sesuai dengan skema yang ditentukan dalam file yang ditentukan oleh parameter SchemaFile .

Untuk informasi selengkapnya, lihat Skema JSON.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Input

String

Anda dapat menyalurkan string JSON ke cmdlet ini.

Output

Boolean

Cmdlet ini mengembalikan $true jika JSON valid dan sebaliknya $false.

Catatan

Sejak PowerShell 6, PowerShell menggunakan rakitan Newtonsoft.Json untuk fungsi JSON. Implementasi Newtonsoft mencakup beberapa ekstensi ke standar JSON, seperti dukungan untuk komentar dan penggunaan tanda kutip tunggal. Untuk daftar lengkap fitur, lihat dokumentasi Newtonsoft di https://www.newtonsoft.com/json.

Dimulai di PowerShell 7.4, Test-Json menggunakan System.Text.Json untuk penguraian JSON dan JsonSchema.NET untuk validasi skema. Dengan perubahan ini, Test-Json:

  • Tidak lagi mendukung skema Draf 4
  • Hanya mendukung JSON yang benar-benar sesuai

Untuk daftar lengkap perbedaan antara Newtonsoft.Json dan System.Text.Json, lihat Tabel perbedaan dalam Migrasi dari Newtonsoft.Json ke System.Text.Json.

Untuk informasi selengkapnya tentang spesifikasi skema JSON, lihat dokumentasi di JSON-Schema.org.