ConvertTo-Json
Konverterar ett objekt till en JSON-formaterad sträng.
Syntax
ConvertTo-Json
[-InputObject] <Object>
[-Depth <Int32>]
[-Compress]
[-EnumsAsStrings]
[-AsArray]
[-EscapeHandling <StringEscapeHandling>]
[<CommonParameters>]
Description
Cmdleten ConvertTo-Json
konverterar alla .NET-objekt till en sträng i JSON-format (JavaScript Object Notation). Egenskaperna konverteras till fältnamn, fältvärdena konverteras till egenskapsvärden och metoderna tas bort.
Kommentar
Från och med PowerShell 7.2 serialiseras inte längre egenskaperna för Extended Type System för DateTime - och String-objekt och endast det enkla objektet konverteras till JSON-format
Du kan sedan använda cmdleten ConvertFrom-Json
för att konvertera en JSON-formaterad sträng till ett JSON-objekt, som enkelt hanteras i PowerShell.
Många webbplatser använder JSON i stället för XML för att serialisera data för kommunikation mellan servrar och webbaserade appar.
Från och med PowerShell 7.1 ConvertTo-Json
genererar en varning om djupet i indataobjektet överskrider det djup som angetts för kommandot. Detta förhindrar oönskad dataförlust vid konvertering av objekt.
Den här cmdleten introducerades i Windows PowerShell 3.0.
Exempel
Exempel 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
}
Det här kommandot använder cmdleten ConvertTo-Json
för att konvertera ett GregorianCalendar-objekt till en JSON-formaterad sträng.
Exempel 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"
]
Det här exemplet visar utdata från ConvertTo-Json
cmdleten med och utan växelparametern AsArray . Du kan se att den andra delen av utdata är omsluten inom matrisparenteser.
Exempel 3
@{Account="User01";Domain="Domain01";Admin="True"} | ConvertTo-Json -Compress
{"Domain":"Domain01","Account":"User01","Admin":"True"}
Det här kommandot visar effekten av att använda parametern Komprimera för ConvertTo-Json
. Komprimering påverkar endast strängens utseende, inte dess giltighet.
Exempel 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
}
I det här exemplet används cmdleten ConvertTo-Json
för att konvertera ett System.DateTime-objekt från cmdleten Get-Date
till en JSON-formaterad sträng. Kommandot använder cmdleten Select-Object
för att hämta alla (*
) egenskaper för DateTime-objektet . Utdata visar JSON-strängen som ConvertTo-Json
returnerades.
Exempel 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
Det här exemplet visar hur du använder ConvertTo-Json
cmdletarna och ConvertFrom-Json
för att konvertera ett objekt till en JSON-sträng och ett JSON-objekt.
Parametrar
-AsArray
Matar ut objektet inom matrisparenteser, även om indata är ett enda objekt.
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Compress
Utelämnar tomt utrymme och indragen formatering i utdatasträngen.
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Depth
Anger hur många nivåer av inneslutna objekt som ingår i JSON-representationen. Värdet kan vara valfritt tal från 0
till 100
. Standardvärdet är 2
. ConvertTo-Json
genererar en varning om antalet nivåer i ett indataobjekt överskrider det här antalet.
Typ: | Int32 |
Position: | Named |
Standardvärde: | 2 |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-EnumsAsStrings
Tillhandahåller ett alternativt serialiseringsalternativ som konverterar alla uppräkningar till deras strängrepresentation.
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-EscapeHandling
Styr hur vissa tecken är undantagna i de resulterande JSON-utdata. Som standard är endast kontrolltecken (som ny rad) undantagna.
Godtagbara värden är:
- Standard – Endast kontrolltecken är undantagna.
- EscapeNonAscii – Alla icke-ASCII- och kontrolltecken är undantagna.
- EscapeHtml – HTML (
<
,>
,&
,'
,"
) och kontrolltecken är undantagna.
Den här parametern introducerades i PowerShell 6.2.
Typ: | Newtonsoft.Json.StringEscapeHandling |
Position: | Named |
Standardvärde: | Default |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-InputObject
Anger vilka objekt som ska konverteras till JSON-format. Ange en variabel som innehåller objekten eller skriv ett kommando eller uttryck som hämtar objekten. Du kan också skicka ett objekt till ConvertTo-Json
.
Parametern InputObject krävs, men dess värde kan vara null ($null
) eller en tom sträng.
När indataobjektet är $null
returnerar ConvertTo-Json
JSON-representationen av null
. När indataobjektet är en tom sträng ConvertTo-Json
returnerar JSON-representationen av en tom sträng.
Typ: | Object |
Position: | 0 |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | True |
Godkänn jokertecken: | False |
Indata
Du kan skicka valfritt objekt till den här cmdleten.
Utdata
Den här cmdleten returnerar en sträng som representerar indataobjektet som konverterats till en JSON-sträng.
Kommentarer
Cmdleten ConvertTo-Json
implementeras med Newtonsoft Json.NET.