Udostępnij za pośrednictwem


ConvertTo-Json

Konwertuje obiekt na ciąg sformatowany w formacie JSON.

Składnia

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

Opis

Polecenie ConvertTo-Json cmdlet konwertuje dowolny obiekt .NET na ciąg w formacie JavaScript Object Notation (JSON). Właściwości są konwertowane na nazwy pól, wartości pól są konwertowane na wartości właściwości, a metody są usuwane.

Uwaga

Od programu PowerShell 7.2 właściwości systemu rozszerzonego typu obiektów DateTime i String nie są już serializowane i tylko prosty obiekt jest konwertowany na format JSON

Następnie możesz użyć ConvertFrom-Json polecenia cmdlet , aby przekonwertować ciąg w formacie JSON na obiekt JSON, który jest łatwo zarządzany w programie PowerShell.

Wiele witryn sieci Web używa formatu JSON zamiast XML do serializacji danych na potrzeby komunikacji między serwerami i aplikacjami internetowymi.

Od programu PowerShell 7.1 emituje ostrzeżenie, ConvertTo-Json jeśli głębokość obiektu wejściowego przekracza głębokość określoną dla polecenia. Zapobiega to niepożądanej utracie danych podczas konwertowania obiektów.

To polecenie cmdlet zostało wprowadzone w programie Windows PowerShell 3.0.

Przykłady

Przykład 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
}

To polecenie używa ConvertTo-Json polecenia cmdlet do konwertowania obiektu GregorianCalendar na ciąg sformatowany w formacie JSON.

Przykład 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"
]

W tym przykładzie pokazano dane wyjściowe polecenia ConvertTo-Json cmdlet z parametrem przełącznika AsArray i bez tego parametru. Druga część danych wyjściowych jest opakowana w nawiasy tablicowe.

Przykład 3

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

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

To polecenie pokazuje efekt użycia parametru Compress polecenia ConvertTo-Json. Kompresja wpływa tylko na wygląd ciągu, a nie jego ważność.

Przykład 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
}

W tym przykładzie ConvertTo-Json użyto polecenia cmdlet do przekonwertowania obiektu System.DateTime z Get-Date polecenia cmdlet na ciąg sformatowany w formacie JSON. Polecenie używa Select-Object polecenia cmdlet , aby pobrać wszystkie (*) właściwości obiektu DateTime . Dane wyjściowe zawierają zwrócony ciąg ConvertTo-Json JSON.

Przykład 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

W tym przykładzie pokazano, jak używać ConvertTo-Json poleceń cmdlet i ConvertFrom-Json do konwertowania obiektu na ciąg JSON i obiektu JSON.

Parametry

-AsArray

Zwraca obiekt w nawiasach tablicowych, nawet jeśli dane wejściowe są pojedynczym obiektem.

Typ:SwitchParameter
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Compress

Pomija białe znaki i wcięcie formatowania w ciągu wyjściowym.

Typ:SwitchParameter
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Depth

Określa, ile poziomów zawartych obiektów znajduje się w reprezentacji JSON. Wartość może być dowolną liczbą z 0 do 100. Domyślna wartość to 2. ConvertTo-Json Emituje ostrzeżenie, jeśli liczba poziomów w obiekcie wejściowym przekracza tę liczbę.

Typ:Int32
Position:Named
Domyślna wartość:2
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-EnumsAsStrings

Udostępnia alternatywną opcję serializacji, która konwertuje wszystkie wyliczenia na ich reprezentację ciągu.

Typ:SwitchParameter
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-EscapeHandling

Określa sposób, w jaki określone znaki są ucieczki w wynikowych danych wyjściowych JSON. Domyślnie są używane tylko znaki sterujące (na przykład nowy wiersz).

Dopuszczalne wartości to:

  • Ustawienie domyślne — tylko znaki sterujące są ucieczki.
  • EscapeNonAscii — wszystkie znaki inne niż ASCII i kontrolki są ucieczki.
  • EscapeHtml — znaki html (<, >, &, ', ") i kontrolki są usuwane.

Ten parametr został wprowadzony w programie PowerShell 6.2.

Typ:Newtonsoft.Json.StringEscapeHandling
Position:Named
Domyślna wartość:Default
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-InputObject

Określa obiekty do konwersji na format JSON. Wprowadź zmienną zawierającą obiekty lub wpisz polecenie lub wyrażenie, które pobiera obiekty. Możesz również przekazać obiekt do ConvertTo-Jsonobiektu .

Parametr InputObject jest wymagany, ale jego wartość może mieć wartość null ($null) lub pusty ciąg. Gdy obiekt wejściowy to $null, ConvertTo-Json zwraca reprezentację nullJSON elementu . Gdy obiekt wejściowy jest pustym ciągiem, ConvertTo-Json zwraca reprezentację JSON pustego ciągu.

Typ:Object
Position:0
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

Dane wejściowe

Object

Do tego polecenia cmdlet można przekazać dowolny obiekt.

Dane wyjściowe

String

To polecenie cmdlet zwraca ciąg reprezentujący obiekt wejściowy przekonwertowany na ciąg JSON.

Uwagi

Polecenie ConvertTo-Json cmdlet jest implementowane przy użyciu Json.NET Newtonsoft.