Test-Json (Microsoft.PowerShell.Utility)
Test-Json
- Modül:
- Microsoft.PowerShell.Utility
Bir dizenin geçerli bir JSON belgesi olup olmadığını test eder
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>]Tanım
Test-Json cmdlet'i, bir dizenin geçerli bir JavaScript Nesne Gösterimi (JSON) belgesi olup olmadığını test eder ve isteğe bağlı olarak JSON belgesini sağlanan bir şemaya göre doğrulayabilir.
Doğrulanan dize daha sonra JSON biçimli bir dizeyi PowerShell'de kolayca yönetilen veya JSON girişine erişen başka bir programa veya web hizmetine gönderilen bir JSON nesnesine dönüştüren ConvertFrom-Json cmdlet'iyle birlikte kullanılabilir.
Birçok web sitesi, sunucular ve web tabanlı uygulamalar arasındaki iletişim için verileri serileştirmek amacıyla XML yerine JSON kullanır.
Bu cmdlet PowerShell 6.1'de tanıtıldı
Örnekler
Örnek 1: Bir nesnenin geçerli JSON olup olmadığını test edin
Bu örnek, giriş dizesinin geçerli bir JSON belgesi olup olmadığını test eder.
'{"name": "Ashley", "age": 25}' | Test-Json
TrueÖrnek 2: Bir nesneyi sağlanan bir şemaya göre test edin
Bu örnek, JSON şeması içeren bir dize alır ve onu 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'
FalseBu ö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 hata alıyoruz.
Daha fazla bilgi için bkz. JSON Şeması.
Örnek 3: Bir nesneyi dosyadaki bir şemaya göre test edin
JSON şeması $ref anahtar sözcüğünü kullanarak tanımlara referans verebilir. $ref başka bir dosyaya başvuran bir URI'ye çözümlenebilir. SchemaFile parametresi, JSON şema dosyasının gerçek yolunu kabul eder ve JSON dosyalarının bu tür şemalara göre doğrulanmasına olanak tanır.
Bu örnekte schema.json dosyası definitions.json'a başvuruyor.
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'
TrueDaha fazla bilgi için bkz. Karmaşık bir şema yapılandırma.
Parametreler
-Json
Geçerliliği test edilecek JSON dizesini belirtir. Dizeyi içeren bir değişken girin veya dizeyi alan bir komut veya ifade yazın. Ayrıca bir dizeyi Test-Json'a yönlendirebilirsiniz.
Json parametresi gereklidir.
- Tip :
String
- Konum:
-
0
- Varsayılan değer:
None
- Gerekli:
True
- Boru hattı girişini kabul edin:
True
- Joker karakterleri kabul et:
False
-LiteralPath
JSON dosyasının yolunu belirtir. LiteralPath'in değeri tam olarak yazıldığı gibi kullanılır. Hiçbir karakter joker karakter olarak yorumlanmaz. Yol kaçış karakterleri içeriyorsa, onu tek tırnak işaretleri içine alın. Tek tırnak işaretleri PowerShell'e hiçbir karakteri kaçış dizisi olarak yorumlamamasını söyler.
Bu parametre PowerShell 7.4'e eklenmiştir.
- Tip :
String
- Takma adlar:
PSPath, LP
- Konum:
0
- Varsayılan değer:
-
None
- Gerekli:
True
- Boru hattı girişini kabul edin:
True
- Joker karakterleri kabul et:
False
-Path
JSON dosyasının yolunu belirtir. Bu cmdlet, öğeyi belirtilen konuma getirir. Joker karakterlere izin verilir ancak desenin tek bir dosyaya çözümlenmesi gerekir.
Bu parametre PowerShell 7.4'e eklenmiştir.
- Tip :
String
- Konum:
0
- Varsayılan değer:
None
- Gerekli:
True
- Boru hattı girişini kabul edin:
True
- Joker karakterleri kabul et:
True
-Schema
JSON girişinin doğrulanacağı bir şema belirtir. Geçilirse, Test-Json, JSON girişinin Schema parametresi tarafından belirtilen spesifikasyona uygun olduğunu doğrular ve yalnızca giriş uygunsa $true sonucunu döndürür sağlanan şemaya.
Daha fazla bilgi için bkz. JSON Şeması.
- Tip :
String
- Konum:
1
- Varsayılan değer:
None
- Gerekli:
True
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-SchemaFile
JSON girişini doğrulamak için kullanılan şema dosyasını belirtir. Kullanıldığında, Test-Json yalnızca JSON girişinin SchemaFile parametresi tarafından belirtilen dosyada tanımlanan şemaya uyması durumunda $true değerini döndürür.
Daha fazla bilgi için bkz. JSON Şeması.
- Tip :
String
- Konum:
1
- Varsayılan değer:
None
- Gerekli:
True
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
Girişler
Dize
Bu cmdlet'e bir JSON dizesi aktarabilirsiniz.
Çıkışlar
Boolean
Bu cmdlet, JSON geçerliyse $true, aksi halde $false değerini döndürür.
Notlar
PowerShell 6'dan bu yana PowerShell, JSON işlevleri için Newtonsoft.Json derlemelerini kullanır. Newtonsoft'un uygulaması, yorum desteği ve tek tırnak kullanımı gibi JSON standardına yönelik çeşitli uzantılar içerir. Özelliklerin tam listesi için https://www.newtonsoft.com/json adresindeki Newtonsoft belgelerine bakın.
PowerShell 7.4'ten itibaren Test-Json, JSON ayrıştırma için System.Text.Json'u ve şema doğrulama için JsonSchema.NET'i kullanır. Bu değişikliklerle Test-Json:
- Artık Taslak 4 şemalarını desteklemiyor
- Yalnızca kesinlikle uyumlu JSON'u destekler
Newtonsoft.Json ve System.Text.Json arasındaki farkların tam listesi için Newtonsoft.Json'dan System.Text.Json'a Geçiş bölümündeki Farklılıklar tablosuna bakın.
JSON şeması özellikleri hakkında daha fazla bilgi için JSON-Schema.org adresindeki belgelere bakın.