PowerShell で JSON 配列を作成する方法

  1. PowerShell で ConvertTo-Json を使用して JSON 配列を作成する
  2. PowerShell で ConvertTo-Json を使用して JSON 配列を作成し、ファイルに保存する
  3. PowerShell で Here-Strings を使用して JSON 配列を作成する
  4. カスタムオブジェクトの配列を作成して PowerShell で JSON 配列を作成する
  5. 結論
PowerShell で JSON 配列を作成する方法

PowerShell では、JSON(JavaScript Object Notation)は、さまざまなシステムやアプリケーション間の通信に使用される一般的なデータインターチェンジフォーマットです。キーと値のペアを含む JSON 配列は、データを整理するための構造化された方法です。

この記事では、PowerShell で JSON 配列を作成するさまざまな方法を、詳細なコード例と説明とともに探ります。

PowerShell で ConvertTo-Json を使用して JSON 配列を作成する

この例では、PowerShell を使用してシンプルな JSON 配列を作成する方法を示します。まず、$Body という変数内に JSON 配列を整理し、次に ConvertTo-Json コマンドレットを使用して JSON 配列に変換します。

例 1:

$Body = @(
    @{
        FirstName ='Alen'
        LastName  ='Walker'
    }
)
ConvertTo-Json -InputObject $Body

このコードスニペットでは、@() を使用して配列を定義し、配列内にデータ要素を表すキーと値のペアを持つハッシュテーブル(@{})を作成します。ハッシュテーブル内のキーは、FirstNameLastName など、JSON 内のフィールド名に対応します。

次に、ConvertTo-Json を使用して、この構造を JSON 配列に変換します。

結果として得られる JSON 出力は以下の通りです。

出力:

[
    {
        "LastName":  "Walker",
        "FirstName":  "Alen"
    }
]

次の例では、サブ配列を含む JSON オブジェクトを作成する方法を示します。

$Body 変数は、2つのプロパティを持つ JSON オブジェクトを保持するために定義されています:My ItemsMy details。各プロパティにはアイテムの配列が含まれています。

例 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

このスクリプトでは、ハッシュテーブル(@{})を定義し、'My Items''My details'の 2つのキーを指定します。'My Items'に関連付けられた値はアイテム名の配列であり、'My details'に関連付けられた値は各アイテムの詳細を表すハッシュテーブルの配列です。

$Body 変数に対して ConvertTo-Json を実行すると、この構造が JSON オブジェクトに変換されます。

結果の JSON 出力は以下の通りです。

出力:

{
    "My details":  [
                       {
                           "Id":  "0001",
                           "Name":  "Alen"
                       },
                       {
                           "Id":  "0002",
                           "Name":  "Mycle"
                       }
                   ],
    "My Items":  [
                     "Item 1",
                     "Item 2",
                     "Item 3",
                     "Item 4"
                 ]
}

この JSON オブジェクトでは、"My details""My Items"がキーであり、それぞれのデータの配列に関連付けられています。この構造は、関連するデータを階層的な方法で整理するためのもので、PowerShell で JSON を扱う際の一般的な使用例です。

PowerShell オブジェクトを作成し、それを直接 JSON 配列に変換することもできます。以下の例を見てみましょう:

$jsonArray = @(
    @{
        FirstName = 'John'
        LastName  = 'Doe'
    },
    @{
        FirstName = 'Jane'
        LastName  = 'Smith'
    }
)

$jsonOutput = $jsonArray | ConvertTo-Json

Write-Output $jsonOutput

出力:

[
    {
        "LastName":  "Doe",
        "FirstName":  "John"
    },
    {
        "LastName":  "Smith",
        "FirstName":  "Jane"
    }
]

ここで、この例のスクリプトは、$jsonArray という名前の変数を PowerShell のハッシュテーブルの配列として定義することから始まります。各ハッシュテーブルは、名(FirstName)と姓(LastName)の属性を持つ人物を表します。

スクリプトは次に、この PowerShell のハッシュテーブルの配列を ConvertTo-Json コマンドレットを使用して JSON 配列に変換し、結果を $jsonOutput 変数に割り当てます。最後に、Write-Output を使用して、結果の JSON 配列を表示します。

要約すると、このスクリプトは、PowerShell ハッシュテーブルを使用して、それぞれの名と姓を持つ 2 人の個人の JSON 配列表現を作成し、その後、この JSON 配列をコンソールに出力します。

PowerShell で ConvertTo-Json を使用して JSON 配列を作成し、ファイルに保存する

この方法はやや複雑です。複数の変数を使用して JSON 配列を段階的に作成します。

この方法をよりよく理解するために、以下の例を見てください。

例:

$jsonBase = @{}
$array = @{}
$data = @{"Name" = "Mycle"; "Colour" = "Alen"; }
$array.Add("User", $data)
$jsonBase.Add("UserData", $array)
$jsonBase | ConvertTo-Json -Depth 10 | Out-File ".\sample.json"

スクリプトの冒頭で、空のハッシュテーブルとして $jsonBase が作成されます。これは、作成する JSON オブジェクトの基本構造として機能します。

次に、配列オブジェクトを表すために、別のハッシュテーブル $array が初期化されます。この $array 変数は、JSON 構造内の配列を構成するデータを保持します。

その後、ユーザーデータのサンプルが、ユーザーの名前や色などのキーと値のペアを含むハッシュテーブル $data を使用して定義されます。このデータは後で配列内にカプセル化されます。

次に、スクリプトは $data ハッシュテーブルを $array ハッシュテーブルに追加し、キーUser に関連付けます。これにより、配列内でユーザー固有のデータの表現が確立されます。

続いて、ユーザーデータを含む $array が、キーUserData を使用して $jsonBase ハッシュテーブルに追加されます。このステップは、ユーザーデータの配列をより大きな JSON 構造内にカプセル化します。

最後に、スクリプトは ConvertTo-Json を使用して $jsonBase ハッシュテーブルを JSON 形式に変換します。-Depth パラメータは、入れ子構造を変換するための再帰の深さを制御します。

最後に、Out-File コマンドレットが JSON データを現在のディレクトリに sample.json という名前のファイルに保存します。

実行後、ユーザーデータがキーUserData の下に含まれ、ユーザーの名前と色がキーUser の下の入れ子構造内に表示される sample.json という名前の JSON ファイルが生成されます。

出力(sample.json):

{
    "UserData":  {
                     "User":  {
                                  "Name":  "Mycle",
                                  "Colour":  "Alen"
                              }
                 }
}

PowerShell で Here-Strings を使用して JSON 配列を作成する

PowerShell で here-strings を使用することは、望ましいレイアウトを維持しながら、整形式の JSON 配列を構築するための便利な技術です。@" ... "@で示される here-string は、PowerShell でテキストのブロックを定義することを可能にし、改行やインデントを含むフォーマットを保持します。

here-strings を使用して、文字列として直接 JSON 配列を作成することができます。

例:

$jsonArray = @"
[
    {
        "FirstName": "John",
        "LastName": "Doe"
    },
    {
        "FirstName": "Jane",
        "LastName": "Smith"
    }
]
"@

Write-Output $jsonArray

出力:

[
    {
        "FirstName": "John",
        "LastName": "Doe"
    },
    {
        "FirstName": "Jane",
        "LastName": "Smith"
    }
]

この例では、here-string(@" ... "@)を使用して、文字列として直接 JSON 配列を作成しています。

この here-string 内で、適切な構文を使用して JSON 配列を定義しました。

  • 配列全体を囲むために角括弧 [...] を使用しました。
  • 次に、各個別の JSON オブジェクトを囲むために波括弧 {...} を使用しました。

最後に、Write-Output を使用して JSON 配列を表示しました。

このアプローチは、望ましい構造と形式を持つ JSON 配列を構成するプロセスを効率化します。出力は、定義された構造に合致した整形式の JSON 配列を示しています。

カスタムオブジェクトの配列を作成して PowerShell で JSON 配列を作成する

JSON 配列を作成するために使用できる別の方法は、要素を表すカスタムオブジェクトの配列を作成し、それを JSON 配列に変換することです。カスタムオブジェクトは、データを定義し構造化することを可能にする [PSCustomObject] 型のインスタンスです。

[PSCustomObject] を使用すると、カスタムプロパティを持つオブジェクトを作成できます。これは、スクリプトや関数内で構造化データを作成し操作するための基本的な機能です。

カスタムプロパティは、ハッシュテーブルのような構文を使用して定義され、プロパティ名とそれに対応する値を指定します。次のように:

[PSCustomObject]@{
    Property1 = 'Value1'
    Property2 = 'Value2'
}

以下は例です:

$jsonArray = @(
    [PSCustomObject]@{
        FirstName = 'John'
        LastName  = 'Doe'
    },
    [PSCustomObject]@{
        FirstName = 'Jane'
        LastName  = 'Smith'
    }
)

$jsonOutput = $jsonArray | ConvertTo-Json

Write-Output $jsonOutput

出力:

[
    {
        "FirstName":  "John",
        "LastName":  "Doe"
    },
    {
        "FirstName":  "Jane",
        "LastName":  "Smith"
    }
]

提供された例では、カスタムオブジェクトを使用して定義された配列 $jsonArray が作成されます。プロパティ FirstNameLastName およびそれぞれの値があります。

次に、ConvertTo-Json コマンドレットを使用して、カスタムオブジェクトの配列($jsonArray)を JSON 配列形式に変換します。結果の JSON 配列($jsonOutput)は、各カスタムオブジェクトを要素として含み、定義されたプロパティと値が JSON 構文で表現されています。

最後に、JSON 配列が Write-Output を使用して表示されます。

結論

結論として、PowerShell は JSON 配列を作成するための複数の方法を提供しており、それぞれの特定のニーズや好みに応じています。

ConvertTo-Json コマンドレットは、PowerShell オブジェクトや配列を JSON 表現に簡単に変換することを可能にする多用途のツールです。JSON を直接構造化する場合や here-strings を使用する場合、またはカスタムオブジェクトを活用する場合でも、PowerShell はさまざまなアプリケーションやシステム間での効率的なデータインターチェンジおよび整理のための JSON 配列の生成に柔軟性を提供します。

チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe
著者: MD Aminul Islam
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

関連記事 - PowerShell JSON