PowerShell で JSON オブジェクトをファイルに書き込む
PowerShell は、構造化データの作成に使用できる非常に強力なオブジェクトベースの言語です。したがって、プレーンテキストよりも操作が簡単です。
PowerShell カスタムオブジェクト
PSCustomObject
は PowerShell オブジェクトのベースです。プロパティと値が含まれています。
したがって、PowerShell は JSON オブジェクトも処理できます。
JSON の例から JSON カスタムオブジェクトを作成してみましょう。 $MyJsonVar
変数に JSON を割り当てました。
$MyJsonVar = @"
{
"ExampleJson":{
"Fruit1":{
"Name":"Apple",
"Price":"`$10.00"
}
}
}
"@
出力:
ConvertFrom-JSON
コマンドレットを使用して実際の JSON オブジェクトを作成する必要があります。これにより、実際の PSCustomObject
が作成されます。
新しく作成した JSON オブジェクトを $MyJsonObject
変数に割り当てましょう。
$MyJsonObject = $MyJsonVar | ConvertFrom-Json
新しく作成された JSON オブジェクト PSCustomObject
を表示してみましょう。
$MyJsonObject
出力:
そのプロパティによって JSON オブジェクトにアクセスできます。
$MyJsonObject.ExampleJson.Fruit1.Price
$MyJsonObject.ExampleJson.Fruit1.Name
出力:
そのため、$MyJsonObject
という適切な PowerShell カスタムオブジェクトを取得したことが確認されました。
PowerShellJSON オブジェクトから JSON 文字列
ConvertTo-Json
コマンドレットは、既存のカスタムオブジェクトを JSON 文字列に変換できます。これは、JSON 形式のプレーンテキストになります。
構文:
ConvertTo-Json
[-InputObject] <Object>
[-Depth <Int32>]
[-Compress]
[-EnumsAsStrings]
[-AsArray]
[-EscapeHandling <StringEscapeHandling>]
[<CommonParameters>]
上記のすべてのパラメーターは、ConvertTo-Json
コマンドレットのオプションです。
-Depth
パラメータは、JSON 文字列のレベル数を指定できます。これは重要なパラメータであり、慎重に使用する必要があります。
このパラメータを誤って使用すると、データが失われる可能性があります。デフォルト値は 2 です。
-InputObject
パラメータは、JSON 文字列に変換する必要があるカスタムオブジェクトを指定します。カスタムオブジェクトを ConvertTo-Json
コマンドレットに簡単にパイプできます。
パイプ(|
)を介して $MyJsonObject
を送信し、カスタムオブジェクトを JSON 文字列に変換できます。
$MyJsonObject | ConvertTo-Json
出力:
JSON 文字列をファイルに保存
PowerShell を使用して JSON 文字列をファイルに保存することができます。JSON 文字列の出力を Out-File
コマンドレットにパイプできます。
.json
ファイルを作成する必要があるパスを指定することができます。
$MyJsonObject | ConvertTo-Json | Out-File "D:\misc\example.json"
パス"D\misc\example.json"
は異なる場合があります。これにより、指定されたディレクトリ構造内に example.json
ファイルが作成されます。
出力:
JSON カスタムオブジェクトは、JSON 形式で example.json
ファイルに保存されています。
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.