Test-Json
Menguji apakah string adalah dokumen JSON yang valid
Sintaks
JsonString (Default)
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>]
Deskripsi
Cmdlet Test-Json 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 cmdlet ConvertFrom-Json 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 -ErrorAction SilentlyContinue
False
Dalam contoh ini, kami menggunakan parameter ErrorAction untuk menekan pesan kesalahan. Tanpa parameter ini, perintah juga menghasilkan kesalahan karena skema mengharapkan bilangan bulat untuk usia tetapi input JSON yang kami uji menggunakan nilai string sebagai gantinya.
Contoh 3: Menguji objek terhadap skema dari file
Skema JSON dapat mereferensikan definisi menggunakan kata kunci $ref.
$ref dapat menerjemahkan ke URI yang mereferensikan file lain. Parameter SchemaFile
Dalam contoh ini, file schema.json mereferensikan 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
Untuk informasi selengkapnya, lihat Menyusun skema 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.
Properti parameter
| Jenis: | String |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
JsonString
| Position: | 0 |
| Wajib: | True |
| Nilai dari alur: | True |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
JsonStringWithSchemaString
| Position: | 0 |
| Wajib: | True |
| Nilai dari alur: | True |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
JsonStringWithSchemaFile
| Position: | 0 |
| Wajib: | True |
| Nilai dari alur: | True |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-LiteralPath
Menentukan jalur ke file JSON. Nilai LiteralPath digunakan persis seperti yang diketik. Tidak ada karakter yang ditafsirkan sebagai wildcard. Jika jalur menyertakan karakter escape, bungkus jalur tersebut 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.
Properti parameter
| Jenis: | String |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | PSPath, LP |
Set parameter
JsonLiteralPath
| Position: | 0 |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | True |
| Nilai dari argumen yang tersisa: | False |
JsonLiteralPathWithSchemaString
| Position: | 0 |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | True |
| Nilai dari argumen yang tersisa: | False |
JsonLiteralPathWithSchemaFile
| Position: | 0 |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | True |
| Nilai dari argumen yang tersisa: | False |
-Options
Secara default, Test-Json tidak mendukung JSON yang berisi komentar atau koma berikutnya. Parameter ini memungkinkan Anda menentukan opsi untuk mengubah perilaku default. Opsi berikut ini tersedia:
IgnoreCommentsAllowTrailingCommas
Parameter ini ditambahkan di PowerShell 7.5.0-preview.4.
Properti parameter
| Jenis: | String[] |
| Nilai default: | None |
| Nilai yang diterima: | IgnoreComments, AllowTrailingCommas |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | 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.
Properti parameter
| Jenis: | String |
| Nilai default: | None |
| Mendukung wildcard: | True |
| DontShow: | False |
Set parameter
JsonPath
| Position: | 0 |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | True |
| Nilai dari argumen yang tersisa: | False |
JsonPathWithSchemaString
| Position: | 0 |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | True |
| Nilai dari argumen yang tersisa: | False |
JsonPathWithSchemaFile
| Position: | 0 |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | True |
| Nilai dari argumen yang tersisa: | False |
-Schema
Menentukan skema untuk memvalidasi input JSON. Jika diteruskan,
Untuk informasi selengkapnya, lihat Skema JSON .
Properti parameter
| Jenis: | String |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
JsonStringWithSchemaString
| Position: | 1 |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
JsonLiteralPathWithSchemaString
| Position: | 1 |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
JsonPathWithSchemaString
| Position: | 1 |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-SchemaFile
Menentukan file skema yang digunakan untuk memvalidasi input JSON. Saat digunakan,
Untuk informasi selengkapnya, lihat Skema JSON .
Properti parameter
| Jenis: | String |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
JsonStringWithSchemaFile
| Position: | 1 |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
JsonLiteralPathWithSchemaFile
| Position: | 1 |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
JsonPathWithSchemaFile
| Position: | 1 |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
CommonParameters
Cmdlet ini mendukung parameter umum: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction, dan -WarningVariable. Untuk informasi selengkapnya, lihat about_CommonParameters.
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:
- 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 di Migrate dari Newtonsoft.Json ke System.Text.Json.
Untuk informasi selengkapnya tentang spesifikasi skema JSON, lihat dokumentasi di JSON-Schema.org.