このエントリーをはてなブックマークに追加


ハッシュからJSON,JSONからPSCustomObjectに変換する方法

PowerShellでハッシュに設定したパラメータをJSON文字列に変換するには、ConvertTo-Json コマンドレット、
受け取ったJSON文字列をPowerShellで操作できるようにするには、ConvertFrom-Json コマンドレットを使用することで簡単に実現できます。
以下、ConvertTo-JsonコマンドレットとConvertFrom-Jsonコマンドレットの使用例を記します。


関連記事

ハッシュ(パラメータ)からJSON文字列に変換・ConvertTo-Json

ConvertTo-JsonコマンドレットによるハッシュからJSON文字列に変換する操作例を以下に記します。

  1. JSON文字列にしたいパラメータをハッシュテーブルに設定します。
    PS C:\> $h2 = @{uid="sakura"; pwd="password"}
    PS C:\> $h1 = @{domain="just4fun.biz"; user=$h2}
  2. 設定したパラメータ(ハッシュテーブル)の値を確認します。
    PS C:\> $h1
    
    Name                           Value
    ----                           -----
    user                           {pwd, uid}
    domain                         just4fun.biz
  3. 設定したパラメータをConvertTo-Jsonコマンドレットを使用してJSON文字列に変換しています。
    PS C:\> $h1 | ConvertTo-Json
    {
        "user":  {
                     "pwd":  "password",
                     "uid":  "sakura"
                 },
        "domain":  "just4fun.biz"
    }
  4. 上記結果を$json変数に格納します。
    次のJSON文字列からPSCustomObjectへの変換でこの$json変数を使用します。
    PS C:\> $json = ($h1 | ConvertTo-Json)
    文字列(String)であることが確認できます。
    PS C:\> $json.GetType()
    
    IsPublic IsSerial Name                                     BaseType
    -------- -------- ----                                     --------
    True     True     String                                   System.Object

JSON文字列からPowerShellで簡単に扱えるPSCustomObjectに変換する・ConvertFrom-Json

上記で$json変数に設定したJSON文字列を使用します。

  1. JSON文字列を確認します。
    PS C:\> $json
    {
        "user":  {
                     "pwd":  "password",
                     "uid":  "sakura"
                 },
        "domain":  "just4fun.biz"
    }
  2. ConvertFrom-Jsonコマンドレットを使用して、PowerShellで簡単に扱えるPSCustomObjectに変換しています。
    PS C:\> $json | ConvertFrom-Json
    
    user                        domain
    ----                        ------
    @{pwd=password; uid=sakura} just4fun.biz
  3. 返却されたクラス名を確認してみます。
    PS C:\> ($json | ConvertFrom-Json).GetType()
    
    IsPublic IsSerial Name                                     BaseType
    -------- -------- ----                                     --------
    True     False    PSCustomObject                           System.Object
  4. $o変数に返却されたPSCustomObjectを代入し、値を参照してみます。
    PS C:\> $o = ($json | ConvertFrom-Json)
    PS C:\> $o
    
    user                        domain
    ----                        ------
    @{pwd=password; uid=sakura} just4fun.biz
    
    
    PS C:\> $o.domain
    just4fun.biz
    PS C:\> $o.user
    
    pwd      uid
    ---      ---
    password sakura
    PS C:\> $o.user.uid
    sakura
    PS C:\> $o.user.pwd
    password
    上記の通り、値を簡単に取り出すことができます。

以上、ConvertFrom-Json, ConvertTo-Jsonコマンドレットを使用して、
JSON文字列からPowerShellで扱いやすいPSCustomObjectへの変換、ハッシュテーブルからJSON文字列に変換する方法の紹介でした。



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-04-24 (火) 12:39:35