Aracılığıyla paylaş


Test-Json

Dizenin geçerli bir JSON belgesi olup olmadığını sınar

Sözdizimi

JsonString EnterprisePublishing

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>]

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 -ErrorAction SilentlyContinue
False

Bu örnekte, hata iletisini engellemek için ErrorAction parametresini kullanırız. Bu parametre olmadan, şema yaş için bir tamsayı beklediğinden ancak test ettiğimiz JSON girişi bunun yerine bir dize değeri kullandığından komut bir hata da verir.

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. Bir metni Test-Json'e de yöneltebilirsiniz.

Json parametresi gereklidir.

Parametre özellikleri

Tür:String
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

JsonString
Position:0
Zorunlu:True
İşlem hattından gelen değer:True
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False
JsonStringWithSchemaString
Position:0
Zorunlu:True
İşlem hattından gelen değer:True
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False
JsonStringWithSchemaFile
Position:0
Zorunlu:True
İşlem hattından gelen değer:True
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer: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, yolu tek tırnak işaretleriyle çevreleyin. Tek tırnak işaretleri, PowerShell'in hiçbir karakteri kaçış dizisi olarak yorumlamamasını sağlar.

Bu parametre PowerShell 7.4'e eklendi.

Parametre özellikleri

Tür:String
Default value:None
Joker karakterleri destekler:False
DontShow:False
Diğer adlar:PSPath, LP

Parametre kümeleri

JsonLiteralPath
Position:0
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:True
Kalan bağımsız değişkenlerden elde edilen değer:False
JsonLiteralPathWithSchemaString
Position:0
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:True
Kalan bağımsız değişkenlerden elde edilen değer:False
JsonLiteralPathWithSchemaFile
Position:0
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:True
Kalan bağımsız değişkenlerden elde edilen değer:False

-Options

Varsayılan olarak, Test-Json açıklamalar veya sondaki virgüller içeren JSON'ı desteklemez. Bu parametre, varsayılan davranışı değiştirmek için seçenekleri belirtmenize olanak tanır. Aşağıdaki seçenekler kullanılabilir:

  • IgnoreComments
  • AllowTrailingCommas

Bu parametre PowerShell 7.5.0-preview.4'e eklendi.

Parametre özellikleri

Tür:

String[]

Default value:None
Kabul edilen değerler:IgnoreComments, AllowTrailingCommas
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer: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.

Parametre özellikleri

Tür:String
Default value:None
Joker karakterleri destekler:True
DontShow:False

Parametre kümeleri

JsonPath
Position:0
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:True
Kalan bağımsız değişkenlerden elde edilen değer:False
JsonPathWithSchemaString
Position:0
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:True
Kalan bağımsız değişkenlerden elde edilen değer:False
JsonPathWithSchemaFile
Position:0
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:True
Kalan bağımsız değişkenlerden elde edilen değer: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ı.

Parametre özellikleri

Tür:String
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

JsonStringWithSchemaString
Position:1
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False
JsonLiteralPathWithSchemaString
Position:1
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False
JsonPathWithSchemaString
Position:1
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer: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 $true parametresi tarafından belirtilen dosyada tanımlanan şemaya uygunsa döndürür.

Daha fazla bilgi için bkz. JSON Şeması.

Parametre özellikleri

Tür:String
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

JsonStringWithSchemaFile
Position:1
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False
JsonLiteralPathWithSchemaFile
Position:1
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False
JsonPathWithSchemaFile
Position:1
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

CommonParameters

Bu cmdlet yaygın parametreleri destekler: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction ve -WarningVariable. Daha fazla bilgi için bkz. about_CommonParameters.

Girişler

String

Bir JSON dizesini bu cmdlet'e yöneltebilirsiniz.

Çıkışlar

Boolean

Bu cmdlet, JSON geçerliyse ve değilse $truedöndürür$false.

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 JSON Test-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ş'tekifarklar tablosu.

JSON şema belirtimleri hakkında daha fazla bilgi için JSON-Schema.org'deki belgelere bakın.