ConvertTo-Json
Konvertiert ein Objekt in eine JSON-formatierte Zeichenfolge.
Syntax
ConvertTo-Json
[-InputObject] <Object>
[-Depth <Int32>]
[-Compress][-EnumsAsStrings]
[-AsArray]
[-EscapeHandling <StringEscapeHandling>][<CommonParameters>]
Beschreibung
Das ConvertTo-Json
Cmdlet konvertiert jedes .NET-Objekt in eine Zeichenfolge im JSON-Format (JavaScript Object Notation). Die Eigenschaften werden in Feldnamen konvertiert, die Feldwerte werden in Eigenschaftswerte konvertiert, und die Methoden werden entfernt.
Anschließend können Sie das ConvertFrom-Json
Cmdlet verwenden, um eine JSON-formatierte Zeichenfolge in ein JSON-Objekt zu konvertieren, das problemlos in PowerShell verwaltet werden kann.
Viele Websites verwenden JSON statt XML, um Daten für die Kommunikation zwischen Servern und webbasierten Apps zu serialisieren.
Dieses Cmdlet wurde in Windows PowerShell 3.0 eingeführt.
Beispiele
Beispiel 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
}
Dieser Befehl verwendet das ConvertTo-Json
Cmdlet, um ein GregorianCalendar-Objekt in eine JSON-formatierte Zeichenfolge zu konvertieren.
Beispiel 2
Get-Date | ConvertTo-Json; Get-Date | ConvertTo-Json -AsArray
{
"value": "2018-10-12T23:07:18.8450248-05:00",
"DisplayHint": 2,
"DateTime": "October 12, 2018 11:07:18 PM"
}
[
{
"value": "2018-10-12T23:07:18.8480668-05:00",
"DisplayHint": 2,
"DateTime": "October 12, 2018 11:07:18 PM"
}
]
Dieses Beispiel zeigt die Ausgabe des ConvertTo-Json
Cmdlets mit und ohne den AsArray-Switchparameter . Sie können sehen, dass der zweite Teil der Ausgabe in Arrayklammern umschlossen ist.
Beispiel 3
@{Account="User01";Domain="Domain01";Admin="True"} | ConvertTo-Json -Compress
{"Domain":"Domain01","Account":"User01","Admin":"True"}
Dieser Befehl zeigt die Auswirkungen der Verwendung des Compress-Parameters von ConvertTo-Json
an. Die Komprimierung wirkt sich nur auf die Darstellung der Zeichenfolge, nicht auf ihre Gültigkeit aus.
Beispiel 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
}
In diesem Beispiel wird das ConvertTo-Json
Cmdlet verwendet, um ein System.DateTime-Objekt aus dem Get-Date
Cmdlet in eine JSON-formatierte Zeichenfolge zu konvertieren. Der Befehl verwendet das Select-Object
Cmdlet, um alle (*
) Eigenschaften des DateTime-Objekts abzurufen. Die Ausgabe zeigt die zurückgegebene JSON-Zeichenfolge ConvertTo-Json
an.
Beispiel 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
In diesem Beispiel wird gezeigt, wie Sie die ConvertTo-Json
Cmdlets und ConvertFrom-Json
verwenden, um ein Objekt in eine JSON-Zeichenfolge und ein JSON-Objekt zu konvertieren.
Parameter
-AsArray
Gibt das Objekt in Arrayklammern aus, auch wenn es sich bei der Eingabe um ein einzelnes Objekt handelt.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Compress
Lässt Leerstellen und eingerückte Formatierungen in der Ausgabezeichenfolge aus.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Depth
Gibt an, wie viele Ebenen der enthaltenen Objekte in der JSON-Darstellung enthalten sind. Der Standardwert ist 2.
Type: | Int32 |
Position: | Named |
Default value: | 2 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-EnumsAsStrings
Stellt eine alternative Serialisierungsoption bereit, die alle Enumerationen in ihre Zeichenfolgendarstellung konvertiert.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-EscapeHandling
Steuert, wie bestimmte Zeichen in der resultierenden JSON-Ausgabe mit Escapezeichen versehen werden. Standardmäßig werden nur Steuerzeichen (z. B. Zeilenumbruch) mit Escapezeichen versehen.
Zulässige Werte sind:
- Standard: Es werden nur Steuerzeichen mit Escapezeichen versehen.
- EscapeNonAscii: Alle Nicht-ASCII- und Steuerzeichen werden mit Escapezeichen versehen.
- EscapeHtml : HTML (
<
,>
,&
,'
, )"
und Steuerzeichen werden mit Escapezeichen versehen.
Dieser Parameter wurde in PowerShell 6.2 eingeführt.
Type: | Newtonsoft.Json.StringEscapeHandling |
Position: | Named |
Default value: | Default |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Gibt die Objekte an, die in das JSON-Format konvertiert werden sollen. Geben Sie eine Variable ein, die die Objekte enthält, oder geben Sie einen Befehl oder einen Ausdruck ein, mit dem die Objekte abgerufen werden. Sie können ein -Objekt auch an übergeben ConvertTo-Json
.
Der InputObject-Parameter ist erforderlich, sein Wert kann jedoch NULL ($null
) oder eine leere Zeichenfolge sein.
Wenn das Eingabeobjekt ist $null
, ConvertTo-Json
generiert keine Ausgabe. Wenn das Eingabeobjekt eine leere Zeichenfolge ist, ConvertTo-Json
gibt eine leere Zeichenfolge zurück.
Type: | Object |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Eingaben
Sie können jedes Objekt an übergeben ConvertTo-Json
.
Ausgaben
Hinweise
Das ConvertTo-Json
Cmdlet wird mithilfe von Newtonsoft Json.NET implementiert.