PowerShellで連想配列をJSONでシリアライズする2。

powershell コンピュータ
powershell

少し階層の深い連想配列をJSON化してみます。

$data = [PSCustomObject]@{
   'A' = [PSCustomObject]@{
      'B' = [PSCustomObject]@{
        'C' = [PSCustomObject]@{
            'D' = @( 7, 8, 9)
            }
        }
    }
}

$data | ConvertTo-Json

結果は次の様になりました。

{
    "A":  {
              "B":  {
                        "C":  "@{D=System.Object[]}"
                    }
          }
}

連想配列4層目Dキーとその値の配列が文字列で表現されています。
ConvertTo-JSONにDepthオプションで4を指定してみます。

$data = [PSCustomObject]@{
    'A' = [PSCustomObject]@{
        'B' = [PSCustomObject]@{
            'C' = [PSCustomObject]@{
                'D' = @( 7, 8, 9)
            }
        }
    }
}
$data | ConvertTo-Json -Depth 4

結果は次の様になります。

{
    "A":  {
              "B":  {
                        "C":  {
                                  "D":  [
                                            7,
                                            8,
                                            9
                                        ]
                              }
                    }
          }
}

全て処理されています。

PowerShellのConvertTo-Jsonを使う場合Depthオプションを指定してあげないと思わぬ結果がもたらされるかもしれないことを学びました。

コメント