PowerShell で JSON 配列を作成する方法
-
PowerShell で
ConvertTo-Json
を使用して JSON 配列を作成する -
PowerShell で
ConvertTo-Json
を使用して JSON 配列を作成し、ファイルに保存する - PowerShell で Here-Strings を使用して JSON 配列を作成する
- カスタムオブジェクトの配列を作成して 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
このコードスニペットでは、@()
を使用して配列を定義し、配列内にデータ要素を表すキーと値のペアを持つハッシュテーブル(@{}
)を作成します。ハッシュテーブル内のキーは、FirstName
や LastName
など、JSON 内のフィールド名に対応します。
次に、ConvertTo-Json
を使用して、この構造を JSON 配列に変換します。
結果として得られる JSON 出力は以下の通りです。
出力:
[
{
"LastName": "Walker",
"FirstName": "Alen"
}
]
次の例では、サブ配列を含む JSON オブジェクトを作成する方法を示します。
$Body
変数は、2つのプロパティを持つ JSON オブジェクトを保持するために定義されています:My Items
と My 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
が作成されます。プロパティ FirstName
と LastName
およびそれぞれの値があります。
次に、ConvertTo-Json
コマンドレットを使用して、カスタムオブジェクトの配列($jsonArray
)を JSON 配列形式に変換します。結果の JSON 配列($jsonOutput
)は、各カスタムオブジェクトを要素として含み、定義されたプロパティと値が JSON 構文で表現されています。
最後に、JSON 配列が Write-Output
を使用して表示されます。
結論
結論として、PowerShell は JSON 配列を作成するための複数の方法を提供しており、それぞれの特定のニーズや好みに応じています。
ConvertTo-Json
コマンドレットは、PowerShell オブジェクトや配列を JSON 表現に簡単に変換することを可能にする多用途のツールです。JSON を直接構造化する場合や here-strings を使用する場合、またはカスタムオブジェクトを活用する場合でも、PowerShell はさまざまなアプリケーションやシステム間での効率的なデータインターチェンジおよび整理のための JSON 配列の生成に柔軟性を提供します。
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