PowerShell JSONファイルの読み書き(ネスト罠対応)
JSONの記事は前にも書きましたが書き直して再投稿です。
JSONファイルの読み書きには
コマンドレットConvertFrom-Json、ConvertTo-Jsonを使います。
JSON形式のファイルから読み込み
JSONファイルを読み込んで扱うにはConvertFrom-JsonでPowerShellオブジェクトに変換します。
$jsonContent = (Get-Content 読み込むJSONファイルのパス | ConvertFrom-Json)
例えばc:\temp\test.jsonがありこれを読み取るには
$jsonContent = (Get-Content "c:\temp\test.json" | ConvertFrom-Json)
ファイルの中身が次のようになっていたとする
{
"name": "cortana",
"age": 123,
"hobby": [
"fishing",
"swimming"
],
"test":{
"test1":1,
"test2":{
"test3":3,
"test4":{
"test5":5,
"test6":{
"test7":7
}
}
}
}
}
読み込んだデータにアクセスするにはこのようにする
$jsonContent.name
$jsonContent.hobby
$jsonContent.hobby[1]
$jsonContent.test.test2.test4.test6.test7
JSON形式のファイルを書き込む
JSON形式のファイルを作るにはConvertTo-Jsonを使います。
ただそのまま使うとネストが2階層までしかファイルに書き込まれないのでオプション-Depthでネスト数を指定します。
$jsonContent | ConvertTo-Json -Depth 4 | Out-File "c:\temp\example.json"
ネスト数を指定しなかった場合、階層の深い部分がつぶれてしまいます。
ハッシュ形式をJSONファイルに保存する
ハッシュ形式をJSONファイルに保存する場合もConvertTo-Jsonを使います。
例えばこのようなハッシュ変数があったとします。
$hash = @{
name = "cortana";
age = 123;
hobby = @(
"fishing", "swimming"
);
test = @{
test1 = 1;
test2 = @{
test3 = 3;
test4 = @{
test5 = 5;
test6 = @{
test7 = 7;
};
};
};
};
}
ファイルにJSONとして出力したい場合
$hash | ConvertTo-Json -Depth 4 | Out-File "c:\temp\example2.json"
この場合も-Depthオプションを付けておかないと正しくファイルになりません。
#PowerShell #JSON #JSON変換 #ハッシュ #ハッシュ変換 #プログラミング #プログラミング学習 #コマンドレット #Windows
この記事が気に入ったらサポートをしてみませんか?