#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
#htmlinsert(win_ads_top.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文字列に変換する方法の紹介でした。
#htmlinsert(win_ads_btm.html)