#author("2018-04-24T12:39:35+09:00","","")
#navi(../)
*ハッシュからJSON,JSONからPSCustomObjectに変換する方法 [#iac019d9]
PowerShellでハッシュに設定したパラメータをJSON文字列に変換するには、Convert''To''-Json コマンドレット、~
受け取ったJSON文字列をPowerShellで操作できるようにするには、Convert''From''-Json コマンドレットを使用することで簡単に実現できます。~
以下、ConvertTo-JsonコマンドレットとConvertFrom-Jsonコマンドレットの使用例を記します。

#contents
#htmlinsertpcsp(win-top.html,win-sp.html)

* 関連記事 [#w4e43984]
-[[PowerShellでwgetやcurlのようにウェブページを取得する方法>PowerShell/wgetやcurlのようにウェブページを取得する]]
-[[PowerShellでHTTPのPOSTを実現する方法>PowerShell/HTTPのPOSTをする方法]]
-[[PowerShellを利用してハッシュからJSON,JSONからPSCustomObjectに変換する方法>PowerShell/ハッシュからJSON,JSONからPSCustomObjectに変換する方法]]

* ハッシュ(パラメータ)からJSON文字列に変換・ConvertTo-Json [#xd3f1698]
ConvertTo-JsonコマンドレットによるハッシュからJSON文字列に変換する操作例を以下に記します。
+JSON文字列にしたいパラメータをハッシュテーブルに設定します。
 PS C:\> $h2 = @{uid="sakura"; pwd="password"}
 PS C:\> $h1 = @{domain="just4fun.biz"; user=$h2}
+設定したパラメータ(ハッシュテーブル)の値を確認します。
 PS C:\> $h1
 
 Name                           Value
 ----                           -----
 user                           {pwd, uid}
 domain                         just4fun.biz
+設定したパラメータをConvertTo-Jsonコマンドレットを使用してJSON文字列に変換しています。
 PS C:\> $h1 | ConvertTo-Json
 {
     "user":  {
                  "pwd":  "password",
                  "uid":  "sakura"
              },
     "domain":  "just4fun.biz"
 }
+上記結果を$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 [#w29863cf]
上記で$json変数に設定したJSON文字列を使用します。
+JSON文字列を確認します。
 PS C:\> $json
 {
     "user":  {
                  "pwd":  "password",
                  "uid":  "sakura"
              },
     "domain":  "just4fun.biz"
 }
+ConvertFrom-Jsonコマンドレットを使用して、PowerShellで簡単に扱えるPSCustomObjectに変換しています。
 PS C:\> $json | ConvertFrom-Json
 
 user                        domain
 ----                        ------
 @{pwd=password; uid=sakura} just4fun.biz
+返却されたクラス名を確認してみます。
 PS C:\> ($json | ConvertFrom-Json).GetType()
 
 IsPublic IsSerial Name                                     BaseType
 -------- -------- ----                                     --------
 True     False    PSCustomObject                           System.Object
+$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文字列に変換する方法の紹介でした。

#htmlinsertpcsp(win-btm.html,win-sp.html)


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS