PowerShellでJSONを扱う
JSONを扱うためのコマンドレット
JSON -> オブジェクト | オブジェクト -> JSON |
---|---|
ConvertFrom-Json | ConvertTo-Json |
オブジェクトを作り、JSON形式に変換し、ファイルを出力する
PS> $hash1 = [ordered]@{Key1="AAA";Key2="BBB"}
PS> $hash2 = [ordered]@{Key1="CCC";Key2="DDD"}
PS> $object = [pscustomobject]@(
>> $hash1
>> $hash2
>> )
>>
PS> $object | ConvertTo-Json | Out-File sample.json -Encoding utf8
PS> Get-Content .\sample.json
[
{
"Key1": "AAA",
"Key2": "BBB"
},
{
"Key1": "CCC",
"Key2": "DDD"
}
]
PS> $object2 = [pscustomobject]@{
>> Hash1 = $hash1
>> Hash2 = $hash2
>> }
>>
PS> $object2 | ConvertTo-Json | Out-File sample2.json -Encoding utf8
PS> Get-Content .\sample2.json
{
"Hash1": {
"Key1": "AAA",
"Key2": "BBB"
},
"Hash2": {
"Key1": "CCC",
"Key2": "DDD"
}
}
JSONファイルをもとに、オブジェクトに変換したり、編集したり、メンバーを追加したりする
メンバーの追加は、Add-Memberを使用する。
# 準備 text.jsonを用意する
PS> $hash = [ordered]@{Text="Text";Num=100}
PS> $hash | ConvertTo-Json | Out-File test.json -Encoding utf8
PS> Get-Content ./test.json
{
"Text": "Text",
"Num": 100
}
# JSONファイルをもとに、オブジェクトに変換したり、編集したり、メンバーを追加したりする
PS> $obj = Get-Content ./test.json -Raw | ConvertFrom-Json
PS> $obj
Text Num
---- ---
Text 100
PS> $obj.Num++
PS> $obj
Text Num
---- ---
Text 101
PS> $obj.Text = $obj.Text + "Add"
PS> $obj
Text Num
---- ---
TextAdd 101
PS> $obj | Add-Member -MemberType NoteProperty -Name Text2 -Value "Text2"
PS> $obj
Text Num Text2
---- --- -----
TextAdd 101 Text2
PS> $obj | ConvertTo-Json | Out-File test2.json -Encoding utf8
PS> Get-Content ./test2.json -Encoding UTF8
{
"Text": "TextAdd",
"Num": 101,
"Text2": "Text2"
}
スポンサーリンク