Test-Json
Dizenin geçerli bir JSON belgesi olup olmadığını sınar
Syntax
Test-Json
[-Json] <String>
[<CommonParameters>]
Test-Json
[-Json] <String>
[[-Schema] <String>]
[<CommonParameters>]
Test-Json
[-Json] <String>
[-SchemaFile <String>]
[<CommonParameters>]
Description
Cmdlet, bir dizenin Test-Json
geçerli bir JavaScript Nesne Gösterimi (JSON) belgesi olup olmadığını sınar ve isteğe bağlı olarak sağlanan şemada JSON belgesini doğrulayabilir.
Doğrulanmış dize daha sonra cmdlet'i ile birlikte ConvertFrom-Json
kullanılabilir ve JSON biçimli bir dizeyi, 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ü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 tanıtıldı
Örnekler
Örnek 1: Bir nesnenin geçerli JSON olup olmadığını test etme
Bu örnek, giriş dizesinin geçerli bir JSON belgesi olup olmadığını sınar.
"{'name': 'Ashley', 'age': 25}" | Test-Json
True
Örnek 2: Sağlanan şemada bir nesneyi 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 : IntegerExpected: #/age
At line:1 char:37
+ "{'name': 'Ashley', 'age': '25'}" | Test-Json -Schema $schema
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Test-Json], Exception
+ FullyQualifiedErrorId : InvalidJsonAgainstSchema,Microsoft.PowerShell.Commands.TestJsonCommand
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 dosyasına başvuruda definitions.json
bulunan bir dosyamız vardırschema.json
.
PS> Get-Content schema.json
{
"description":"A person",
"type":"object",
"properties":{
"name":{
"$ref":"definitions.json#/definitions/name"
},
"hobbies":{
"$ref":"definitions.json#/definitions/hobbies"
}
}
}
PS> 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. Bir dizeyi öğesine Test-Json
de yöneltebilirsiniz.
Json parametresi gereklidir.
Type: | String |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-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ı.
Type: | String |
Position: | 2 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SchemaFile
JSON girişini doğrulamak için kullanılan ş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ı.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Girişler
JSON dizesini öğesine Test-Json
yöneltebilirsiniz.
Çıkışlar
Boolean
Notlar
Test-Json
Cmdlet, NJsonSchema Sınıfı kullanılarak uygulanır.
PowerShell 6'dan bu yana, PowerShell tüm JSON işlevleri için Newtonsoft.Json derlemelerini kullanır. Newtonsoft'un uygulaması, açıklamalar için destek ve tek tırnak kullanımı gibi JSON standardının çeşitli uzantılarını içerir. Özelliklerin tam listesi için konumundaki https://www.newtonsoft.com/jsonNewtonsoft belgelerine bakın.