コマンドレットのパラメータを列挙してみる。|TweetPowerShellでJScript.NETを利用してJSONをパースするの続きです。3.5から追加されたSystem.Web.Script.Serialization.JavaScriptSerializerクラスを用いるとJSONのパースと作成が簡単に行えることがわかりました。名前が列挙されるこのように、JavaScriptSerializerをNew-Objectして、DeserializeObjectメソッドを呼ぶだけで、JSONをパースした結果がオブジェクトに格納されます。このときJSオブジェクトはDictionary<string,object>に、JS配列はobject[]にされて格納されます。よってオブジェクトのアクセスは前回JScript.NETを使った場合と同様にパラメータ付プロパティでできますし、配列のアクセスは数値の添え字で可能です。前回に比べて良くなっている点は、DictionaryなのでPowerShellにおける連想配列と同様に、プロパティアクセスが可能である点です。よって、$obj.items[1].nameのようにドット演算子で楽に値を取得できます。JS配列はオブジェクト配列として格納されています。よって、foreachすればその要素がそのまま列挙できます。前回に比べて素直なコードになっていることが分かると思います。3.5が使える環境ではPowerShellでJSONをパースするにはJavaScriptSerializerが本命なんじゃないかなと思います。JavaScriptSerializerクラスを使うと、JSON文字列を作成することも容易です。ここでは先程の例のJSONを逆にPowerShellで作ってみます。)})このように、Serializeメソッドの引数にPowerShellの連想配列を渡すだけです。連想配列の要素に連想配列や配列を含むことで、オブジェクトを構築していきます。これを実行すると結果は次のようになります。{"items":[{"name":"ハードディスク2TB","code":25,"price":7000},{"name":"メモリ8GB","code":56,"price":8000},{"name":"23インチ液晶ディスプレイ","code":137,"price":35000}]}これは最初に示したJSONとまったく同じであることが分かると思います。このように非常に直感的かつ簡便にJSON文字列を作成することができます。PowerShellの連想配列と配列を使ってオブジェクトを組み立てるだけなので、難しいことを考える必要はなく、柔軟性も高いです。JSONの作成もJavaScriptSerializerが本命でしょうね。JavaScriptSerializerはPowerShellとの相性が抜群です。@mutaguchiBooks書籍版。