ConvertTo-Json (Microsoft.PowerShell.Utility)


ConvertTo-Json

Modül:
Microsoft.PowerShell.Utility

Bir nesneyi JSON biçimli bir dizeye dönüştürür.

Sözdizimi

ConvertTo-Json
              [-InputObject] <Object>
              [-Depth <Int32>]
              [-Compress]
              [-EnumsAsStrings]
              [-AsArray]
              [-EscapeHandling <StringEscapeHandling>]
              [<CommonParameters>]

Tanım

ConvertTo-Json cmdlet'i herhangi bir .NET nesnesini JavaScript Nesne Gösterimi (JSON) biçimindeki bir dizeye dönüştürür. Özellikler alan adlarına dönüştürülür, alan değerleri özellik değerlerine dönüştürülür ve yöntemler kaldırılır.

Not

PowerShell 7.2'den itibaren, DateTime ve String nesnelerinin Genişletilmiş Tür Sistemi özellikleri artık serileştirilmemektedir ve yalnızca basit nesne JSON biçimine dönüştürülmektedir.

Daha sonra, JSON biçimli bir dizeyi PowerShell'de kolayca yönetilen bir JSON nesnesine dönüştürmek için ConvertFrom-Json cmdlet'ini kullanabilirsiniz.

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.

PowerShell 7.1'den itibaren ConvertTo-Json, giriş nesnesinin derinliği komut için belirtilen derinliği aşarsa bir uyarı verir. Bu, nesneleri dönüştürürken istenmeyen veri kaybını önler.

Bu cmdlet, Windows PowerShell 3.0'da tanıtıldı.

Örnekler

Örnek 1

(Get-UICulture).Calendar | ConvertTo-Json

{
  "MinSupportedDateTime": "0001-01-01T00:00:00",
  "MaxSupportedDateTime": "9999-12-31T23:59:59.9999999",
  "AlgorithmType": 1,
  "CalendarType": 1,
  "Eras": [
    1
  ],
  "TwoDigitYearMax": 2029,
  "IsReadOnly": true
}

Bu komut, bir GregorianCalendar nesnesini JSON biçimli bir dizeye dönüştürmek için ConvertTo-Json cmdlet'ini kullanır.

Örnek 2

Get-Date | ConvertTo-Json; Get-Date | ConvertTo-Json -AsArray

"2021-08-05T16:13:05.6394416-07:00"
[
  "2021-08-05T16:13:05.6421709-07:00"
]

Bu örnek, AsArray anahtar parametresi olan ve olmayan ConvertTo-Json cmdlet'inin çıktısını gösterir. Çıktının ikinci kısmının dizi parantezleri içine sarıldığını görebilirsiniz.

Örnek 3

@{Account="User01";Domain="Domain01";Admin="True"} | ConvertTo-Json -Compress

{"Domain":"Domain01","Account":"User01","Admin":"True"}

Bu komut, ConvertTo-Json'un Compress parametresini kullanmanın etkisini gösterir. Sıkıştırma dizenin geçerliliğini değil yalnızca görünümünü etkiler.

Örnek 4

Get-Date | Select-Object -Property * | ConvertTo-Json

{
  "DisplayHint": 2,
  "DateTime": "October 12, 2018 10:55:32 PM",
  "Date": "2018-10-12T00:00:00-05:00",
  "Day": 12,
  "DayOfWeek": 5,
  "DayOfYear": 285,
  "Hour": 22,
  "Kind": 2,
  "Millisecond": 639,
  "Minute": 55,
  "Month": 10,
  "Second": 32,
  "Ticks": 636749817326397744,
  "TimeOfDay": {
    "Ticks": 825326397744,
    "Days": 0,
    "Hours": 22,
    "Milliseconds": 639,
    "Minutes": 55,
    "Seconds": 32,
    "TotalDays": 0.95523888627777775,
    "TotalHours": 22.925733270666665,
    "TotalMilliseconds": 82532639.774400011,
    "TotalMinutes": 1375.54399624,
    "TotalSeconds": 82532.6397744
  },
  "Year": 2018
}

Bu örnek, bir System.DateTime nesnesini Get-Date cmdlet'inden JSON biçimli bir dizeye dönüştürmek için ConvertTo-Json cmdlet'ini kullanır. Komut, DateTime nesnesinin tüm (*) özelliklerini almak için Select-Object cmdlet'ini kullanır. Çıktı, ConvertTo-Json'un döndürdüğü JSON dizesini gösterir.

Örnek 5

Get-Date | Select-Object -Property * | ConvertTo-Json | ConvertFrom-Json

DisplayHint : 2
DateTime    : October 12, 2018 10:55:52 PM
Date        : 2018-10-12 12:00:00 AM
Day         : 12
DayOfWeek   : 5
DayOfYear   : 285
Hour        : 22
Kind        : 2
Millisecond : 768
Minute      : 55
Month       : 10
Second      : 52
Ticks       : 636749817527683372
TimeOfDay   : @{Ticks=825527683372; Days=0; Hours=22; Milliseconds=768; Minutes=55; Seconds=52;
              TotalDays=0.95547185575463; TotalHours=22.9313245381111; TotalMilliseconds=82552768.3372;
              TotalMinutes=1375.87947228667; TotalSeconds=82552.7683372}
Year        : 2018

Bu örnek, bir nesneyi bir JSON dizesine ve bir JSON nesnesine dönüştürmek için ConvertTo-Json ve ConvertFrom-Json cmdlet'lerinin nasıl kullanılacağını gösterir.

Parametreler

-AsArray

Giriş tek bir nesne olsa bile nesneyi dizi parantezleri içinde çıkarır.

Tip :

SwitchParameter

Konum:

Adlandırılmış

Varsayılan değer:

None

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-Compress

Çıkış dizesindeki beyaz boşlukları ve girintili biçimlendirmeyi atlar.

Tip :

SwitchParameter

Konum:

Adlandırılmış

Varsayılan değer:

None

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-Depth

JSON temsiline kaç düzeyde içerilen nesnenin dahil edildiğini belirtir. Değer, 0 ile 100 arasında herhangi bir sayı olabilir. Varsayılan değer 2'dir. ConvertTo-Json, bir giriş nesnesindeki düzey sayısı bu sayıyı aşarsa bir uyarı verir.

Tip :

Int32

Konum:

Adlandırılmış

Varsayılan değer:

2

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-EnumsAsStrings

Tüm numaralandırmaları dize temsillerine dönüştüren alternatif bir serileştirme seçeneği sağlar.

Tip :

SwitchParameter

Konum:

Adlandırılmış

Varsayılan değer:

None

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-EscapeHandling

Ortaya çıkan JSON çıktısında belirli karakterlerin nasıl atlandığını kontrol eder. Varsayılan olarak yalnızca kontrol karakterlerinin (satırsonu karakteri gibi) çıkışı yapılır.

Kabul edilebilir değerler şunlardır:

  • Varsayılan - Yalnızca kontrol karakterlerinden çıkış yapılır.
  • EscapeNonAscii - Tüm ASCII olmayan ve kontrol karakterlerinden çıkış yapılır.
  • EscapeHtml - HTML (<, >, &, ', ") ve kontrol karakterlerinden kaçılır.

Bu parametre PowerShell 6.2'de tanıtıldı.

Tip :

Newtonsoft.Json.StringEscapeHandling

Konum:

Adlandırılmış

Varsayılan değer:

Varsayılan

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-InputObject

JSON biçimine dönüştürülecek nesneleri belirtir. Nesneleri içeren bir değişken girin veya nesneleri alan bir komut veya ifade yazın. Ayrıca bir nesneyi ConvertTo-Json'a yönlendirebilirsiniz.

InputObject parametresi gereklidir ancak değeri null ($null) veya boş bir dize olabilir. Giriş nesnesi $null olduğunda, ConvertTo-Json, null'un JSON temsilini döndürür. Giriş nesnesi boş bir dize olduğunda, ConvertTo-Json boş bir dizenin JSON temsilini döndürür.

Tip :

Nesne

Konum:

0

Varsayılan değer:

None

Gerekli:

True

Boru hattı girişini kabul edin:

True

Joker karakterleri kabul et:

False

Girişler

Nesne

Bu cmdlet'e herhangi bir nesneyi aktarabilirsiniz.

Çıkışlar

Dize

Bu cmdlet, bir JSON dizesine dönüştürülmüş giriş nesnesini temsil eden bir dize döndürür.

Notlar

ConvertTo-Json cmdlet'i Newtonsoft Json.NET kullanılarak uygulanır.

İlgili makaleler