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.

Hinweis

Ab PowerShell 7.2 werden die Eigenschaften des erweiterten Typsystems von DateTime - und String-Objekten nicht mehr serialisiert, und nur das einfache Objekt wird in das JSON-Format konvertiert.

Anschließend können Sie das ConvertFrom-Json Cmdlet verwenden, um eine JSON-formatierte Zeichenfolge in ein JSON-Objekt zu konvertieren, das einfach in PowerShell verwaltet wird.

Viele Websites verwenden JSON statt XML, um Daten für die Kommunikation zwischen Servern und webbasierten Apps zu serialisieren.

Ab PowerShell 7.1 wird eine Warnung ausgegeben, ConvertTo-Json wenn die Tiefe des Eingabeobjekts die für den Befehl angegebene Tiefe überschreitet. Dies verhindert unerwünschten Datenverlust beim Konvertieren von Objekten.

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

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

Dieses Beispiel zeigt die Ausgabe des ConvertTo-Json Cmdlets mit und ohne den Parameter "AsArray switch". Sie können sehen, dass der zweite Teil der Ausgabe in Arrayklammern eingeschlossen ist.

Beispiel 3

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

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

Dieser Befehl zeigt den Effekt der Verwendung des Compress-Parameters von ConvertTo-Json. 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 ein Objekt mit den ConvertTo-Json Cmdlets ConvertFrom-Json in eine JSON-Zeichenfolge und ein JSON-Objekt konvertieren.

Parameter

-AsArray

Gibt das Objekt in Klammern des Arrays aus, auch wenn es sich bei der Eingabe um ein einzelnes Objekt handelt.

Typ:SwitchParameter
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Compress

Lässt Leerstellen und eingerückte Formatierungen in der Ausgabezeichenfolge aus.

Typ:SwitchParameter
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Depth

Gibt an, wie viele Ebenen der enthaltenen Objekte in der JSON-Darstellung enthalten sind. Der Wert kann eine beliebige Zahl von 0 bis zu 100. Der Standardwert ist 2. ConvertTo-Json gibt eine Warnung aus, wenn die Anzahl der Ebenen in einem Eingabeobjekt diese Zahl überschreitet.

Typ:Int32
Position:Named
Standardwert:2
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-EnumsAsStrings

Stellt eine alternative Serialisierungsoption bereit, mit der alle Enumerationen in ihre Zeichenfolgendarstellung konvertiert werden.

Typ:SwitchParameter
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-EscapeHandling

Steuert, wie bestimmte Zeichen in der resultierenden JSON-Ausgabe escaped werden. Standardmäßig werden nur Steuerzeichen (z. B. Neue Zeile) mit Escapezeichen versehen.

Zulässige Werte sind:

  • Standard : Nur Steuerzeichen werden escaped.
  • EscapeNonAscii – Alle Nicht-ASCII- und Steuerzeichen werden mit Escapezeichen versehen.
  • EscapeHtml - HTML -Zeichen (<, >, &, '", ) und Steuerelementzeichen werden escaped.

Dieser Parameter wurde in PowerShell 6.2 eingeführt.

Typ:Newtonsoft.Json.StringEscapeHandling
Position:Named
Standardwert:Default
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren: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 ConvertTo-Json.

Der InputObject-Parameter ist erforderlich, der Wert kann jedoch null ($null) oder eine leere Zeichenfolge sein. Wenn das Eingabeobjekt lautet $null, ConvertTo-Json wird die JSON-Darstellung von null. Wenn das Eingabeobjekt eine leere Zeichenfolge ist, ConvertTo-Json wird die JSON-Darstellung einer leeren Zeichenfolge zurückgegeben.

Typ:Object
Position:0
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:True
Platzhalterzeichen akzeptieren:False

Eingaben

Object

Sie können jedes Objekt an dieses Cmdlet weiterleiten.

Ausgaben

String

Dieses Cmdlet gibt eine Zeichenfolge zurück, die das in eine JSON-Zeichenfolge konvertierte Eingabeobjekt darstellt.

Hinweise

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