ConvertFrom-Json
JSON biçimli bir dizeyi özel bir nesneye veya karma tabloya dönüştürür.
Syntax
Default (Varsayılan)
ConvertFrom-Json
[-InputObject] <String>
[-AsHashtable]
[-Depth <Int32>]
[-NoEnumerate]
[<CommonParameters>]
Description
ConvertFrom-Json cmdlet'i, JavaScript Nesne Gösterimi (JSON) biçimli bir dizeyi, JSON dizesindeki her alan için bir özelliği olan özel bir PSCustomObject nesnesine dönüştürür. JSON, web siteleri tarafından nesnelerin metinsel gösterimini sağlamak için yaygın olarak kullanılır. JSON standardı, PSCustomObjectile yasaklanan kullanımı yasaklamaz. Örneğin, JSON dizesi yinelenen anahtarlar içeriyorsa, bu cmdlet tarafından yalnızca son anahtar kullanılır. Aşağıdaki diğer örneklere bakın.
Herhangi bir nesneden JSON dizesi oluşturmak için ConvertTo-Json cmdlet'ini kullanın.
Bu cmdlet PowerShell 3.0'da kullanıma sunulmuştur.
Uyarı
PowerShell 6'dan başlayarak, bu cmdlet açıklamalarla JSON'u destekler. Kabul edilen yorumlar iki eğik çizgi (//) ile başlatılır. Açıklama verilerde temsil edilmez ve verileri bozmadan veya PowerShell 5.1'de olduğu gibi bir hata oluşturmadan dosyaya yazılabilir.
Örnekler
Örnek 1: DateTime nesnesini JSON nesnesine dönüştürme
Bu komut ConvertTo-Json ve ConvertFrom-Json cmdlet'lerini kullanarak cmdlet'inden Get-Date nesnesini bir JSON nesnesine ve ardından PSCustomObjectdönüştürür.
Get-Date | Select-Object -Property * | ConvertTo-Json | ConvertFrom-Json
DisplayHint : 2
DateTime : Friday, January 13, 2012 8:06:31 PM
Date : 1/13/2012 8:00:00 AM
Day : 13
DayOfWeek : 5
DayOfYear : 13
Hour : 20
Kind : 2
Millisecond : 400
Minute : 6
Month : 1
Second : 31
Ticks : 634620819914009002
TimeOfDay : @{Ticks=723914009002; Days=0; Hours=20; Milliseconds=400; Minutes=6; Seconds=31; TotalDays=0.83786343634490734; TotalHours=20.108722472277776; TotalMilliseconds=72391400.900200009; TotalMinutes=1206.5233483366667;TotalSeconds=72391.4009002}
Year : 2012
Örnek, Select-Object nesnesinin tüm özelliklerini almak için cmdlet'ini kullanır.
ConvertTo-Json nesnesini JSON nesnesi olarak biçimlendirilmiş bir dizeye dönüştürmek için cmdlet'ini ve JSON biçimli dizeyi ConvertFrom-Json nesnesine dönüştürmek için cmdlet'ini kullanır.
Örnek 2: Web hizmetinden JSON dizeleri alma ve bunları PowerShell nesnelerine dönüştürme
Bu komut, bir web hizmetinden JSON dizeleri almak için Invoke-WebRequest cmdlet'ini kullanır ve ardından JSON içeriğini PowerShell'de yönetilebilen nesnelere dönüştürmek için ConvertFrom-Json cmdlet'ini kullanır.
# Ensures that Invoke-WebRequest uses TLS 1.2
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$j = Invoke-WebRequest 'https://api.github.com/repos/PowerShell/PowerShell/issues' | ConvertFrom-Json
JSON içeriğini otomatik olarak nesnelere dönüştüren Invoke-RestMethod cmdlet'ini de kullanabilirsiniz.
Örnek 3: JSON dizesini özel nesneye dönüştürme
Bu örnekte bir JSON dosyasını PowerShell özel nesnesine dönüştürmek için ConvertFrom-Json cmdlet'inin nasıl kullanılacağı gösterilmektedir.
Get-Content JsonFile.JSON | ConvertFrom-Json
Komut, dizeleri bir JSON dosyasına almak için Get-Content cmdlet'ini kullanır. Ardından sınırlanmış dizeyi özel bir nesneye dönüştüren ConvertFrom-Json cmdlet'ine göndermek için işlem hattı işlecini kullanır.
Örnek 4: JSON dizesini karma tabloya dönüştürme
Bu komut, -AsHashtable anahtarının komut sınırlamalarını aşabileceği bir örnek gösterir.
'{ "key":"value1", "Key":"value2" }' | ConvertFrom-Json -AsHashtable
JSON dizesi, yalnızca büyük/küçük harf bakımından farklı anahtarlara sahip iki anahtar değer çifti içerir. Anahtar olmadan komut bir hata oluştururdu.
Örnek 5: Tek bir öğe dizisine gidiş dönüş
Bu komut, tek bir öğe JSON dizisine gidiş dönüş yapmak için -NoEnumerate anahtarının kullanıldığı bir örneği gösterir.
Write-Output "With -NoEnumerate: $('[1]' | ConvertFrom-Json -NoEnumerate | ConvertTo-Json -Compress)"
Write-Output "Without -NoEnumerate: $('[1]' | ConvertFrom-Json | ConvertTo-Json -Compress)"
With -NoEnumerate: [1]
Without -NoEnumerate: 1
JSON dizesi tek bir öğeye sahip bir dizi içerir. Anahtar olmadan, JSON'un PSObject'e dönüştürülmesi ve ardından ConvertTo-Json komutuyla geri dönüştürülmesi tek bir tamsayıya neden olur.
Parametreler
-AsHashtable
JSON'ı karma tablo nesnesine dönüştürür. Bu seçenek PowerShell 6.0'da tanıtılmıştır.
ConvertFrom-Json cmdlet'inin bazı sınırlamalarını aşabileceği çeşitli senaryolar vardır.
- JSON, yalnızca büyük/küçük harf bakımından farklılık gösteren anahtarlara sahip bir liste içeriyorsa. Anahtar olmasaydı, bu tuşlar aynı anahtarlar olarak görülür ve bu nedenle yalnızca sonuncusu kullanılır.
- JSON boş bir dize olan bir anahtar içeriyorsa. Anahtar olmadan, cmdlet bir hata atar çünkü a
PSCustomObjectbuna izin vermez, ancak bir karma tablo yapar. Bunun oluşabileceği örnek bir kullanım durumu dosyalardırproject.lock.json. - Karma tablolar belirli veri yapıları için daha hızlı işlenebilir.
Parametre özellikleri
| Tür: | SwitchParameter |
| Default value: | False |
| 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 |
-Depth
JSON girişinin izin verilen maksimum derinliğini alır veya ayarlar. Varsayılan olarak 1024'tür.
Bu parametre PowerShell 6.2'de kullanıma sunulmuştur.
Parametre özellikleri
| Tür: | Int32 |
| Default value: | None |
| 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 |
-InputObject
JSON nesnelerine dönüştürülecek JSON dizelerini belirtir. Dizeyi içeren bir değişken girin veya dizeyi alan bir komut veya ifade yazın. Bir metni ConvertFrom-Json'e de yöneltebilirsiniz.
InputObject parametresi gereklidir, ancak değeri boş bir dize olabilir. Giriş nesnesi boş bir dize olduğunda, ConvertFrom-Json herhangi bir çıkış oluşturmaz.
InputObject değeri $nullolamaz.
Parametre özellikleri
| Tür: | String |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
(All)
| 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 |
-NoEnumerate
Çıktının numaralandırılmadığını belirtir.
Bu parametrenin ayarlanması, dizilerin her öğeyi ayrı ayrı göndermek yerine tek bir nesne olarak gönderilmesine neden olur. Bu, JSON'un ConvertTo-Jsonaracılığıyla kayıpsız bir şekilde aktarılabilmesini garanti eder.
Parametre özellikleri
| Tür: | SwitchParameter |
| Default value: | False |
| 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 |
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
JSON dizesini ConvertFrom-Json'a yönlendirebilirsiniz.
Çıkışlar
PSCustomObject
Hashtable
Notlar
Bu cmdlet, Newtonsoft Json.NETkullanılarak uygulanır.
PowerShell 6'da ConvertTo-Json, zaman damgası olarak biçimlendirilmiş dizeleri DateTime değerlerine dönüştürmeyi dener. Dönüştürülen değer, aşağıdaki gibi [datetime] özelliği ayarlanmış bir Kind örneğidir.
- Eğer giriş dizesinde saat dilimi bilgisi yoksa,
Unspecified. -
Utc, saat dilimi bilgileri sondaki birZise. -
Local, saat dilimi bilgileri gibi bir UTC+02:00olarak verilmişse. Sapma, çağıranın yapılandırdığı saat dilimine uygun şekilde dönüştürülür. Varsayılan çıktı biçimlendirmesi, orijinal saat dilimi farkını göstermez.