by manamana
31. 7月 2013 17:00
先日 Exelの複数の表からJSONデータを作成する機能を Excel PowerShell Tool に組み込みました。
それはなかなか都合が良くて、大量の配信データを手軽に用意することが可能になりました。
それを応用してとあるアプリを組んでいるのですが、キー列を考慮するともっと便利になると気付かされました…
例えば、以下のような表があるとします。
先日の機能で JSONデータを作ると次のようになります。
[
{"ID":1,"MemberOf":["C"],"Description":"初心者"},
{"ID":2,"MemberOf":["C", "B"],"Description":"中堅"},
{"ID":3,"MemberOf":["C", "B", "A"],"Description":"ベテラン"}
]
これは、表を一行単位でオブジェクト化し、表は「行の配列」として処理しているわで、配信データには都合が良い形です。
しかし、この表の ID列は明らかにキーになっています。
このような場合、ID列の要素をキーとした JSONデータを作成すれば、キーによる検索が簡単になります。
具体的には次のようなものです。
{
"1": {"MemberOf":["C"],"Description":"初心者"},
"2": {"MemberOf":["C", "B"],"Description":"中堅"},
"3": {"MemberOf":["C", "B", "A"],"Description":"ベテラン"}
}
キー列の要素を使えば、表全体を一つのオブジェクトにできるわけです。
これなら、 $json."3" のような記述で簡単に三行目のデータにアクセスできますね。
※前者の場合、foreach で回して ID をチェック…とか、やってはダメな手法に陥りがちです
データを階層化しておけば多くの検索が不要になりますが、データのためにメモリーを無駄遣いします。
プログラムで簡単にリンクができるならその方が便利なことは多々あるので、使い分けが重要です。
ということで、JSONデータのの作成時にキー列を指定する事を可能にしました。
その他、任意の列名の最後に ! を加える事で、その列のデータ生成をスキップするとかも加えました。
明らかに不要な列を取り込むのは無駄なので意外に役に立ちます。
以上のような改良を加え、Excel PowerShell Tool Ver1.1 を近々公開予定です。
4c590902-7175-4fb7-be3c-f995fb9adda0|0|.0|96d5b379-7e1d-4dac-a6ba-1e50db561b04
Tags: