Test-Json
Dizenin geçerli bir JSON belgesi olup olmadığını sınar
Sözdizimi
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>]
Description
Cmdlet, bir dizenin Test-Json
geçerli bir JavaScript Nesne Gösterimi (JSON) belgesi olup olmadığını test eder ve isteğe bağlı olarak sağlanan şemada JSON belgesini doğrulayabilir.
Doğrulanmış dize daha sonra cmdlet'iyle birlikte ConvertFrom-Json
kullanılabilir. JSON biçimli bir dize, PowerShell'de kolayca yönetilebilen veya JSON girişine erişen başka bir program veya web hizmetine gönderilen bir JSON nesnesine dönüştürülür.
Birçok web sitesi, sunucular ve web tabanlı uygulamalar arasındaki iletişim için verileri seri hale getirmek için XML yerine JSON kullanır.
Bu cmdlet PowerShell 6.1'de kullanıma sunulmuştur
Örnekler
Örnek 1: Nesnenin geçerli bir JSON olup olmadığını test edin
Bu örnek, giriş dizesinin geçerli bir JSON belgesi olup olmadığını test ediyor.
'{"name": "Ashley", "age": 25}' | Test-Json
True
Örnek 2: Bir nesneyi sağlanan şemaya göre test etme
Bu örnek, JSON şeması içeren bir dize alır ve bunu bir giriş dizesiyle karşılaştırır.
$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
Bu örnekte şema yaş için bir tamsayı beklediğinden ancak test ettiğimiz JSON girişi bunun yerine bir dize değeri kullandığından bir hatayla karşılaşıyoruz.
Daha fazla bilgi için bkz . JSON Şeması.
Örnek 3: Bir nesneyi dosyadan bir şemaya göre test etme
JSON şeması anahtar sözcüğü kullanarak $ref
tanımlara başvurabilir. , $ref
başka bir dosyaya başvuran bir URI'ye çözümlenebilir. SchemaFile parametresi, JSON şema dosyasının değişmez yolunu kabul eder ve JSON dosyalarının bu tür şemalarda doğrulanmasına izin verir.
Bu örnekte schema.json
dosya başvurur 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
Daha fazla bilgi için bkz . Karmaşık şemayı yapılandırma.
Parametreler
-Json
Geçerliliği test etmek için JSON dizesini belirtir. Dizeyi içeren bir değişken girin veya dizeyi alan bir komut veya ifade yazın. Ayrıca bir dizeyi öğesine de yöneltebilirsiniz Test-Json
.
Json parametresi gereklidir.
Tür: | String |
Position: | 0 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | False |
-LiteralPath
JSON dosyasının yolunu belirtir. LiteralPath değeri tam olarak yazıldığı gibi kullanılır. Hiçbir karakter joker karakter olarak yorumlanmamıştır. Yol kaçış karakterleri içeriyorsa, tek tırnak içine alın. Tek tırnak işaretleri PowerShell'e hiçbir karakteri kaçış dizisi olarak yorumlamaması gerektiğini söyler.
Bu parametre PowerShell 7.4'e eklendi.
Tür: | String |
Diğer adlar: | PSPath, LP |
Position: | 0 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | False |
-Path
JSON dosyasının yolunu belirtir. Bu cmdlet öğeyi belirtilen konumda alır. Joker karakterlere izin verilir, ancak desenin tek bir dosyaya çözümlenmesi gerekir.
Bu parametre PowerShell 7.4'e eklendi.
Tür: | String |
Position: | 0 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | True |
-Schema
JSON girişinin doğrulanması için bir şema belirtir. Geçirilirse, Test-Json
JSON girişinin Schema parametresi tarafından belirtilen belirtime uygun olduğunu doğrular ve yalnızca giriş sağlanan şemaya uygunsa döndürür$true
.
Daha fazla bilgi için bkz . JSON Şeması.
Tür: | String |
Position: | 1 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-SchemaFile
JSON girişini doğrulamak için kullanılan bir şema dosyasını belirtir. Kullanıldığında, Test-Json
yalnızca JSON girişi SchemaFile parametresi tarafından belirtilen dosyada tanımlanan şemaya uygunsa döndürür$true
.
Daha fazla bilgi için bkz . JSON Şeması.
Tür: | String |
Position: | 1 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
Girişler
Bir JSON dizesini bu cmdlet'e yöneltebilirsiniz.
Çıkışlar
Boolean
Bu cmdlet, JSON geçerliyse ve değilse $false
döndürür$true
.
Notlar
PowerShell 6'dan bu yana PowerShell, JSON işlevleri için Newtonsoft.Json derlemelerini kullanır. Newtonsoft'un uygulaması, JSON standardına yönelik açıklamalar için destek ve tek tırnak kullanımı gibi çeşitli uzantılar içerir. Özelliklerin tam listesi için konumundaki https://www.newtonsoft.com/jsonNewtonsoft belgelerine bakın.
PowerShell 7.4'te başlayarak, Test-Json
JSON ayrıştırma için System.Text.Json ve şema doğrulaması için JsonSchema.NET kullanır.
Bu değişikliklerle: Test-Json
- Taslak 4 şemalarını artık desteklemez
- Yalnızca tam olarak uyumlu JSON'i destekler
Newtonsoft.Json ile System.Text.Json arasındaki farkların tam listesi için Bkz. Newtonsoft.Json'dan System.Text.Json'a Geçiş'teki farklar tablosu.
JSON şema belirtimleri hakkında daha fazla bilgi için JSON-Schema.org'deki belgelere bakın.
İlişkili Bağlantılar
PowerShell