Wie man ein JSON-Array in PowerShell erstellt

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

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.

Genießen Sie unsere Tutorials? Abonnieren Sie DelftStack auf YouTube, um uns bei der Erstellung weiterer hochwertiger Videoanleitungen zu unterstützen. Abonnieren
MD Aminul Islam avatar MD Aminul Islam avatar

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

Verwandter Artikel - PowerShell JSON