Freigeben über


ConvertTo-Json

Konvertiert ein Objekt in eine JSON-formatierte Zeichenfolge.

Syntax

Default (Standardwert)

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

Beschreibung

Das cmdlet ConvertTo-Json 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 cmdlet ConvertFrom-Json verwenden, um eine JSON-formatierte Zeichenfolge in ein JSON-Objekt zu konvertieren, das einfach in PowerShell verwaltet wird.

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

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

Ab PowerShell 7.5-preview.3 können ConvertTo-JsonBigInteger Werte als unformatierte JSON-Zahlen 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 Cmdlet ConvertTo-Json, 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"
]

In diesem Beispiel wird die Ausgabe von ConvertTo-Json Cmdlet mit und ohne den AsArray Switch-Parameter gezeigt. 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 die Auswirkung der Verwendung des Compress-Parameters von ConvertTo-Json. Die Komprimierung wirkt sich nur auf das Erscheinungsbild der Zeichenfolge und 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 cmdlet ConvertTo-Json verwendet, um ein System.DateTime--Objekt aus dem Cmdlet Get-Date in eine JSON-formatierte Zeichenfolge zu konvertieren. Der Befehl verwendet das cmdlet Select-Object, um alle (*) der Eigenschaften des DateTime--Objekts abzurufen. Die Ausgabe zeigt die JSON-Zeichenfolge, die zurückgegeben ConvertTo-Json.

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 cmdlets ConvertTo-Json und ConvertFrom-Json verwenden, um ein Objekt in eine JSON-Zeichenfolge und ein JSON-Objekt zu konvertieren.

Parameter

-AsArray

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

Parametereigenschaften

Typ:SwitchParameter
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Compress

Lässt Leerzeichen aus und eingezogene Formatierungen in der Ausgabezeichenfolge aus.

Parametereigenschaften

Typ:SwitchParameter
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Depth

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

Parametereigenschaften

Typ:Int32
Standardwert:2
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-EnumsAsStrings

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

Parametereigenschaften

Typ:SwitchParameter
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten: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 (<, >, &, ', ") und Steuerzeichen werden escaped.

Dieser Parameter wurde in PowerShell 6.2 eingeführt.

Parametereigenschaften

Typ:Newtonsoft.Json.StringEscapeHandling
Standardwert:Default
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten: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 Ausdruck ein, der die Objekte ermittelt. Sie können ein Objekt auch an ConvertTo-Jsonpfeifen.

Der parameter InputObject ist erforderlich, sein Wert kann jedoch null ($null) oder eine leere Zeichenfolge sein. Wenn das Eingabeobjekt $nullist, gibt ConvertTo-Json die JSON-Darstellung von nullzurück. Wenn das Eingabeobjekt eine leere Zeichenfolge ist, gibt ConvertTo-Json die JSON-Darstellung einer leeren Zeichenfolge zurück.

Parametereigenschaften

Typ:Object
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:0
Obligatorisch.:True
Wert aus Pipeline:True
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

CommonParameters

Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.

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 cmdlet ConvertTo-Json wird mithilfe Newtonsoft Json.NETimplementiert.