【PowerShell】JSONデータの読み込み・書き込み方法

【PowerShell】JSONデータの読み込み・書き込み方法

PowerShellによるJSONデータの読み込み・書き込み方法について記載します。

<環境>
OS:Windows10(64bit)
PSVersion:v5.1

JSONデータの読み込み

構文
ConvertFrom-Json <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 <オブジェクト>

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階層目までしか変換されません。

スクリプト例

# ハッシュテーブル(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"
                                       }
                          }
             }
}


Next Post Previous Post