Wie man ein JSON-Array in PowerShell erstellt
-
Verwenden Sie
ConvertTo-Json
, um ein JSON-Array in PowerShell zu erstellen -
Verwenden Sie
ConvertTo-Json
, um ein JSON-Array zu erstellen und es in eine Datei in PowerShell zu speichern - Verwenden Sie Here-Strings, um ein JSON-Array in PowerShell zu erstellen
- Erstellen Sie ein Array von benutzerdefinierten Objekten, um ein JSON-Array in PowerShell zu erstellen
- Fazit

In PowerShell ist JSON (JavaScript Object Notation) ein gängiges Datenübertragungsformat, das für die Kommunikation zwischen verschiedenen Systemen und Anwendungen verwendet wird. Ein JSON-Array, das Schlüssel-Wert-Paare enthält, ist eine strukturierte Methode zur Organisation von Daten.
In diesem Artikel werden wir verschiedene Methoden erkunden, um ein JSON-Array in PowerShell zu erstellen, zusammen mit detaillierten Codebeispielen und Erklärungen.
Verwenden Sie ConvertTo-Json
, um ein JSON-Array in PowerShell zu erstellen
In diesem Beispiel zeigen wir, wie man ein einfaches JSON-Array mit PowerShell erstellt. Zuerst organisieren wir das JSON-Array innerhalb einer Variablen namens $Body
und konvertieren es dann mit dem Cmdlet ConvertTo-Json
in ein JSON-Array.
Beispiel 1:
$Body = @(
@{
FirstName ='Alen'
LastName ='Walker'
}
)
ConvertTo-Json -InputObject $Body
In diesem Code-Snippet definieren wir ein Array mit @()
, und innerhalb des Arrays erstellen wir ein Hashtable (@{}
) mit Schlüssel-Wert-Paaren, die die Datenelemente unseres JSON-Arrays darstellen. Die Schlüssel im Hashtable entsprechen den Feldnamen in unserem JSON, wie FirstName
und LastName
.
Wir verwenden dann ConvertTo-Json
, um diese Struktur in ein JSON-Array zu konvertieren.
Die resultierende JSON-Ausgabe ist unten zu sehen.
Ausgabe:
[
{
"LastName": "Walker",
"FirstName": "Alen"
}
]
In unserem nächsten Beispiel zeigen wir die Erstellung eines JSON-Objekts, das Unter-Arrays enthält.
Die Variable $Body
wird definiert, um ein JSON-Objekt mit zwei Eigenschaften zu halten: My Items
und My details
. Jede Eigenschaft enthält ein Array von Elementen.
Beispiel 2:
$body = @{
'My Items' = @(
"Item 1",
"Item 2",
"Item 3",
"Item 4"
)
'My details' =@(
@{
"Name" = "Alen"
"Id" = "0001"
},
@{
"Name" = "Mycle"
"Id" = "0002"
}
)
}
ConvertTo-Json -InputObject $Body
In diesem Skript definieren wir ein Hashtable (@{}
) und spezifizieren zwei Schlüssel: 'My Items'
und 'My details'
. Der Wert, der mit 'My Items'
assoziiert ist, ist ein Array von Elementnamen, während der Wert, der mit 'My details'
assoziiert ist, ein Array von Hashtables darstellt, die Details zu jedem Element enthalten.
Wenn wir ConvertTo-Json
auf die Variable $Body
ausführen, konvertiert es die Struktur in ein JSON-Objekt.
Die resultierende JSON-Ausgabe ist unten zu sehen.
Ausgabe:
{
"My details": [
{
"Id": "0001",
"Name": "Alen"
},
{
"Id": "0002",
"Name": "Mycle"
}
],
"My Items": [
"Item 1",
"Item 2",
"Item 3",
"Item 4"
]
}
In diesem JSON-Objekt sind "My details"
und "My Items"
die Schlüssel, die jeweils mit ihrem entsprechenden Array von Daten verknüpft sind. Die Struktur ermöglicht es, verwandte Daten hierarchisch zu organisieren, was ein häufiger Anwendungsfall ist, wenn man mit JSON in PowerShell arbeitet.
Wir können auch ein PowerShell-Objekt erstellen und es dann direkt mit dem Cmdlet ConvertTo-Json
in ein JSON-Array konvertieren.
Werfen Sie einen Blick auf das folgende Beispiel:
$jsonArray = @(
@{
FirstName = 'John'
LastName = 'Doe'
},
@{
FirstName = 'Jane'
LastName = 'Smith'
}
)
$jsonOutput = $jsonArray | ConvertTo-Json
Write-Output $jsonOutput
Ausgabe:
[
{
"LastName": "Doe",
"FirstName": "John"
},
{
"LastName": "Smith",
"FirstName": "Jane"
}
]
Hier beginnt das Beispielskript mit der Definition einer Variablen namens $jsonArray
als Array von PowerShell-Hashtables. Jede Hashtable stellt eine Person mit Attributen für den Vornamen (FirstName
) und den Nachnamen (LastName
) dar.
Das Skript konvertiert dann dieses PowerShell-Array von Hashtables in ein JSON-Array mit dem Cmdlet ConvertTo-Json
und weist es der Variablen $jsonOutput
zu. Schließlich wird Write-Output
verwendet, um das resultierende JSON-Array anzuzeigen.
Zusammenfassend erstellt das Skript eine JSON-Array-Darstellung von zwei Individuen mit deren jeweiligen Vor- und Nachnamen mithilfe von PowerShell-Hashtables und gibt dann dieses JSON-Array auf der Konsole aus.
Verwenden Sie ConvertTo-Json
, um ein JSON-Array zu erstellen und es in eine Datei in PowerShell zu speichern
Diese Methode ist etwas komplexer. Wir werden das JSON-Array schrittweise mit mehr als einer Variablen erstellen.
Bitte sehen Sie sich das folgende Beispiel an, um diese Methode besser zu verstehen.
Beispiel:
$jsonBase = @{}
$array = @{}
$data = @{"Name" = "Mycle"; "Colour" = "Alen"; }
$array.Add("User", $data)
$jsonBase.Add("UserData", $array)
$jsonBase | ConvertTo-Json -Depth 10 | Out-File ".\sample.json"
Zu Beginn des Skripts wird ein leeres Hashtable namens $jsonBase
erstellt. Dies dient als grundlegende Struktur für das JSON-Objekt, das wir aufbauen werden.
Danach wird ein weiteres Hashtable namens $array
initialisiert, um das Array-Objekt darzustellen. Diese $array
-Variable wird die Daten halten, die das Array innerhalb unserer JSON-Struktur bilden.
Dann werden Beispielbenutzerdaten mit einem Hashtable namens $data
definiert, das Schlüssel-Wert-Paare wie den Namen und die Farbe des Benutzers enthält. Diese Daten werden später innerhalb des Arrays eingekapselt.
Anschließend fügt das Skript die $data
-Hashtable zum $array
-Hashtable hinzu und verknüpft sie mit dem Schlüssel User
. Dies stellt die Darstellung benutzerspezifischer Daten innerhalb des Arrays her.
Weiterhin wird das $array
, das jetzt die Benutzerdaten enthält, zum $jsonBase
-Hashtable mit dem Schlüssel UserData
hinzugefügt. Dieser Schritt kapselt das Array der Benutzerdaten innerhalb der größeren JSON-Struktur.
Gegen Ende konvertiert das Skript das $jsonBase
-Hashtable mit ConvertTo-Json
in das JSON-Format. Beachten Sie, dass der Parameter -Depth
die Tiefe der Rekursion für die Konvertierung von verschachtelten Strukturen steuert.
Schließlich speichert das Cmdlet Out-File
die JSON-Daten in einer Datei mit dem Namen sample.json
im aktuellen Verzeichnis.
Nach der Ausführung wird eine JSON-Datei mit dem Namen sample.json
generiert, die die Benutzerdaten unter dem Schlüssel UserData
enthält und den Namen und die Farbe des Benutzers innerhalb einer verschachtelten Struktur unter dem Schlüssel User
präsentiert.
Ausgabe (sample.json
):
{
"UserData": {
"User": {
"Name": "Mycle",
"Colour": "Alen"
}
}
}
Verwenden Sie Here-Strings, um ein JSON-Array in PowerShell zu erstellen
Die Verwendung von Here-Strings in PowerShell ist eine weitere nützliche Technik, um ein gut formatiertes JSON-Array zu erstellen und dabei das gewünschte Layout beizubehalten. Ein Here-String, dargestellt durch @" ... "@
, ermöglicht es uns, einen Textblock in PowerShell zu definieren, während seine Formatierung, einschließlich Zeilenumbrüchen und Einrückungen, erhalten bleibt.
Wir können Here-Strings verwenden, um ein JSON-Array direkt als Zeichenfolge zu erstellen.
Beispiel:
$jsonArray = @"
[
{
"FirstName": "John",
"LastName": "Doe"
},
{
"FirstName": "Jane",
"LastName": "Smith"
}
]
"@
Write-Output $jsonArray
Ausgabe:
[
{
"FirstName": "John",
"LastName": "Doe"
},
{
"FirstName": "Jane",
"LastName": "Smith"
}
]
In diesem Beispiel verwendeten wir einen Here-String (@" ... "@
), der die direkte Erstellung eines JSON-Arrays als Zeichenfolge ermöglicht.
Innerhalb dieses Here-Strings definierten wir das JSON-Array mit der entsprechenden Syntax:
- Wir verwendeten eckige Klammern
[...]
, um das gesamte Array einzuschließen. - Dann benutzten wir geschweifte Klammern
{...}
, um jedes einzelne JSON-Objekt einzuschließen.
Schließlich gaben wir das JSON-Array mit Write-Output
aus.
Dieser Ansatz vereinfacht den Prozess der Konstruktion eines JSON-Arrays mit der gewünschten Struktur und dem gewünschten Format. Wie wir sehen können, zeigt die Ausgabe ein ordentlich formatiertes JSON-Array, das mit der definierten Struktur übereinstimmt.
Erstellen Sie ein Array von benutzerdefinierten Objekten, um ein JSON-Array in PowerShell zu erstellen
Eine weitere Methode, die wir verwenden können, um ein JSON-Array zu erstellen, besteht darin, ein Array von benutzerdefinierten Objekten zu erstellen, die jeweils ein Element darstellen, und es dann in ein JSON-Array zu konvertieren. Benutzerdefinierte Objekte sind Instanzen des Typs [PSCustomObject]
, die es uns ermöglichen, Daten zu definieren und zu strukturieren.
[PSCustomObject]
ermöglicht es uns, Objekte mit benutzerdefinierten Eigenschaften zu erstellen. Es ist eine grundlegende Funktion in PowerShell, die die Erstellung und Manipulation strukturierter Daten innerhalb von Skripten und Funktionen erleichtert.
Die benutzerdefinierten Eigenschaften werden unter Verwendung einer hashtable-ähnlichen Syntax definiert, bei der wir die Eigenschaftsnamen und ihre entsprechenden Werte angeben, wie folgt:
[PSCustomObject]@{
Property1 = 'Value1'
Property2 = 'Value2'
}
Hier ist ein Beispiel:
$jsonArray = @(
[PSCustomObject]@{
FirstName = 'John'
LastName = 'Doe'
},
[PSCustomObject]@{
FirstName = 'Jane'
LastName = 'Smith'
}
)
$jsonOutput = $jsonArray | ConvertTo-Json
Write-Output $jsonOutput
Ausgabe:
[
{
"FirstName": "John",
"LastName": "Doe"
},
{
"FirstName": "Jane",
"LastName": "Smith"
}
]
In dem bereitgestellten Beispiel wird ein Array namens $jsonArray
erstellt, das benutzerdefinierte Objekte enthält, die mit der @{}
-Syntax definiert sind. Wir haben die Eigenschaften FirstName
und LastName
und deren jeweilige Werte.
Dann wird das Cmdlet ConvertTo-Json
verwendet, um das Array von benutzerdefinierten Objekten ($jsonArray
) in ein JSON-Array-Format zu konvertieren. Das resultierende JSON-Array ($jsonOutput
) enthält nun jedes benutzerdefinierte Objekt als Element, wobei die definierten Eigenschaften und Werte in JSON-Syntax dargestellt sind.
Schließlich wird das JSON-Array mit Write-Output
angezeigt.
Fazit
Zusammenfassend bietet PowerShell mehrere Methoden zur Erstellung eines JSON-Arrays, die jeweils bestimmten Bedürfnissen und Vorlieben gerecht werden.
Das Cmdlet ConvertTo-Json
ist ein vielseitiges Werkzeug, das eine unkomplizierte Konvertierung von PowerShell-Objekten oder -Arrays in JSON-Darstellungen ermöglicht. Ob durch direkte Strukturierung von JSON, Verwendung von Here-Strings oder Nutzung von benutzerdefinierten Objekten, PowerShell bietet Flexibilität bei der Generierung von JSON-Arrays für einen effizienten Datenaustausch und die Organisation über verschiedene Anwendungen und Systeme hinweg.
Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.
LinkedIn