← Back to Home

Using the ConvertTo-JSON cmdlet to Work with JSON Data in PowerShell

Views: 858

You can try the commands on our interactive shell.

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

このチュートリアルが役に立ったことを願います。

Try it Now!