Freigeben über


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-Jsonan. 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

Object

Sie können jedes Objekt an übergeben ConvertTo-Json.

Ausgaben

String

Hinweise

Das ConvertTo-Json Cmdlet wird mithilfe von Newtonsoft Json.NET implementiert.