Using the ConvertTo-JSON cmdlet to Work with JSON Data in PowerShell
JSON (JavaScript オブジェクト ノテーション) は、異なるシステムやサービスとのデータ交換に人気のある軽量データインター・チェンジフォーマットです。PowerShell では、JSON データを操作するための複数の方法があります。ConvertTo-JSON cmdlet を使用して、PowerShell オブジェクトを JSON ストリングに変換し、逆方向にも変換することができます。このチュートリアルでは、ConvertTo-JSON cmdlet を使用して PowerShell オブジェクトを JSON ストリングに変換する方法について学習します。
ConvertTo-JSON とは?
ConvertTo-JSON cmdlet は、PowerShell の built-in cmdlet であり、PowerShell オブジェクトを JSON ストリングに変換します。これは、複雑な PowerShell オブジェクト(例えばカスタム クラスやハッシュ テーブル)を JSON フォーマットに変換するために使用されます。
PowerShell オブジェクトを JSON に変換
まず、簡単な例で ConvertTo-JSON を使用して PowerShell オブジェクトを JSON ストリングに変換する方法を見てみましょう。仮にカスタム クラス Person があって、それを使用して $person を作成します:
class Person {
[string]$Name
[int]$Age
}
$person = [Person]@{
Name = "John"
Age = 30
}
ConvertTo-JSON cmdlet を使用して $person オブジェクトを JSON ストリングに変換するには、次のコマンドを使用します:
$json = $person | ConvertTo-JSON
このコマンドは次のような JSON ストリングを出力します:
{"Name":"John","Age":30}
ConvertTo-JSON cmdlet が自動的に PowerShell オブジェクトを JSON ストリングに変換しました。
JSON を PowerShell オブジェクトに変換
次に、JSON ストリングを PowerShell オブジェクトに変換する方法を見てみましょう。仮に次のような JSON ストリングがあります:
{"Name":"Jane","Age":25}
この JSON ストリングを $person オブジェクトに変換するには、次のコマンドを使用します:
$jsonString = '{"Name":"Jane","Age":25}'
$person = $jsonString | ConvertFrom-JSON -AsHashtable
# ハッシュ テーブルをカスタム クラスのインスタンスに変換
$person = [Person]@{
Name = $person.Name
Age = $person.Age
}
このコマンドは、新しい Person オブジェクトを出力します:
Name : Jane
Age : 25
複雑な JSON データに対処する
次に、複雑な JSON データに対処する方法を見てみましょう。仮に次のような JSON ストリングがあります:
[
{"Name":"John","Age":30},
{"Name":"Jane","Age":25},
{"Name":"Bob","Age":40}
]
この JSON 配列を PowerShell 配列に変換するには、次のコマンドを使用します:
$jsonString = '[{"Name":"John","Age":30},{"Name":"Jane","Age":25},{"Name":"Bob","Age":40}]'
$people = $jsonString | ConvertFrom-JSON -AsArray
# 配列をループして各人の名前と年齢を出力
foreach ($person in $people) {
Write-Host "Name: $($person.Name), Age: $($person.Age)"
}
このコマンドは、次のような結果を出力します:
Name: John, Age: 30
Name: Jane, Age: 25
Name: Bob, Age: 40
結論
このチュートリアルでは、PowerShell の ConvertTo-JSON および ConvertFrom-JSON cmdlet を使用して JSON データを操作する方法について学習しました。PowerShell オブジェクトを JSON ストリングに変換し、逆方向にも変換する方法を見てみました。また、複雑な JSON データに対処する方法も見てみました。
追加の Tips
ConvertTo-JSONcmdlet を使用して PowerShell オブジェクトを JSON ストリングに変換する際には、-Depthパラメーターを使用してナーミングの深さを制御することができます。ConvertFrom-JSONcmdlet を使用して JSON ストリングを PowerShell オブジェクトに変換する際には、-AsHashtableある-AsArrayパラメーターを使用して出力形式を指定することができます。- その他の cmdlet、例えば
ConvertTo-CsvおよびImport-CSVを使用して CSV データを操作することもできます。
このチュートリアルが役に立ったことを願います。