政府統計データ取得 API e-Stat の簡単な使用方法 その 2

政府統計データ取得 API の基本的な流れは、
統計表情報取得 → メタ情報取得 → 統計データ取得
ということを前回説明しました。

今回は統計表情報取得で取得したデータの中身について見ていきたいと思います…が、
前回は取得したレスポンスが json 形式で、
コード上では string 型のままでした。
このままでは解析しにくいため、
これを Dictionary<string, object> 型にパースするコードを追加します。
コードはこちらのサイトを参考に作りましょう。
Parse() メソッドの戻り値は object ですが、
Dictionary<sring, object> がボックス化されているだけなので、
使うときは as 演算子でボックス化解除すれば O.K.。

さて、
string 型 → object 型 -> Dictionary<string, object> 型
に変換することができたので、
これでようやく json の中身をコードで探ることができます。
ここで仕様書を見てみると、
GET_STATS_LIST/DATALIST_INF/TABLE_INF タグに id という属性があり、
これが統計表 ID であると書いてあります。

ではこれをコードで探索してみましょう。

28、37、38 行目で使用している GetValue() メソッドは、
Dictionary<string, object> 型に対する拡張メソッドで、
次に紹介するコードのように定義しました。
要は XML タグを探すときと同じようにタグの中身を覗けるようにするメソッドです。

また、
TABLE_INF タグについては、
検索にヒットした数だけ配列として並ぶ場合があるため、
object[] として取得するようにし、
foreach 文でそれぞれの属性を表示するようにしています。

下記は GetValue() 拡張メソッドのコードです。

GetValue() メソッドは自分を再帰的に呼び出すことで、
自身の階層構造を探索できるようにしています。

実行結果は次のようになります。
ScreenShot01

2012 年に調査した政府統計コード 00200524 に対する検索結果が 22 件あり、
それぞれの統計表 ID と提供統計名がわかりました。

これでやっと統計表 ID がわかったので、
提供統計名から自分の欲しいデータを探し、
それに対応する統計表 ID でメタ情報取得がおこなえるようになりました。

というわけで次回へ続く。