【PowerShell】JSONデータの読み込み・書き込み方法
PowerShellによるJSONデータの読み込み・書き込み方法について記載します。
<環境>
OS:Windows10(64bit)
PSVersion:v5.1
JSONデータの読み込み
構文
ConvertFrom-Jsonコマンドを使用してJSON形式の文字列をオブジェクトに変換します。
スクリプト例
JSONファイルを読み込んで、オブジェクトに変換します。
# JSONファイル読み込み
$jsonStr = Get-Content ".\test.json" -Encoding UTF8 -Raw
# JSON形式の文字列をオブジェクトに変換
$jsonData = ConvertFrom-Json $jsonStr
# データ表示
Write-Output $jsonData.Name
Write-Output $jsonData.Level
Write-Output $jsonData.Abilities[0]
Write-Output $jsonData.Abilities[1]
Write-Output $jsonData.Parameter.HP
Write-Output $jsonData.Parameter.ATK
Write-Output $jsonData.Parameter.DEF
JSONファイル
読み込むJSONファイルの内容は以下になります。
{
"Name": "ピカチュウ",
"Level": 100,
"Abilities": [ "でんきショック", "ボルテッカー" ],
"Parameter": {
"HP": 70,
"ATK": 50,
"DEF": 20
}
}
JSONデータの書き込み
構文
ConvertTo-Jsonコマンドを使用してオブジェクトをJSON形式の文字列に変換します。
スクリプト例
オブジェクトをJSON形式の文字列に変換して、ファイルに書き込みます。
# ハッシュテーブル
$hash = @{
Name = "ピカチュウ"
Level = 100
Abilities = @("でんきショック", "ボルテッカー")
Parameter =
@{
HP=70
ATK=50
DEF=20
}
}
# JSON形式の文字列に変換
$jsonStr = ConvertTo-Json $hash
# ファイルに書き込み
Set-Content -Path "./test.json" -Value $jsonStr -Encoding UTF8
JSONファイル
書き込んだJSONファイルの内容は以下になります。
{
"Abilities": [
"でんきショック",
"ボルテッカー"
],
"Name": "ピカチュウ",
"Level": 100,
"Parameter": {
"DEF": 20,
"ATK": 50,
"HP": 70
}
}
※注意
ConvertTo-Jsonで変換するオブジェクトが3階層以上の場合は、"-Depth"オプションを指定する必要があります。未指定の場合は2階層目までしか変換されません。
ConvertTo-Jsonで変換するオブジェクトが3階層以上の場合は、"-Depth"オプションを指定する必要があります。未指定の場合は2階層目までしか変換されません。
スクリプト例
# ハッシュテーブル(3階層)
$hash = @{
obj1 = @{
obj2 = @{
obj3 = @{
Key = "value"
}
}
}
}
# JSON形式の文字列に変換(-Depth 3 指定)
$jsonStr = ConvertTo-Json $hash -Depth 3
# ファイルに書き込み
Set-Content -Path "./test.json" -Value $jsonStr -Encoding UTF8
JSONファイル
書き込んだJSONファイルの内容は以下になります。
{
"obj1": {
"obj2": {
"obj3": {
"Key": "value"
}
}
}
}