WEBAPIを利用するとレスポンスデータにJSONが返って来る事が非常に多いわけだが、これをVB6やVBAで対応するとなると結構面倒な事になる。
もはや、XMLよりJSONの方が当たり前になっているわけなので、VB6のシステムをまだメンテナンスしているのでスムーズに扱いたいわけだ。
そこで、VBA_JSONと言う強い味方のAPIがあるのでこれを利用させてもらう
しかし、ざくりと調べて見ると普通の1次階層の教科書通りのJSONの取扱方法しか使い方のレクチャーが無いので、現実にはそんな素直なJSONが帰っては来ない。
なので、どうすれば良いか試行錯誤すると方法は意外に簡単だった。
まず、VB6でディクショナリオブジェクトにJSONをパースして、この時点で外側のデータがマッピングされる。
そのディクショナリオブジェクトをEACHで回してやると次の階層のマッピングが取れるので、そのループの中でキーを当てて連想配列にしてやれば良い事がわかった。
おかげで、結構大きめのJSONが取得出来るAPIを扱っているのだが、VB6で連想配列に出来たので扱いも非常に楽ちんだ。
そもそもVB6で連想配列が使えるのがありがたいのだが、JSONと組み合わせる方法が余りにも楽だったので、怖いものなしになったぞ。
そのJSONは車検証をOCRしてくれるサーバーとのやりとりで返って来るのだが、車検証って概ね3種類もフォーマットが違っていて、3種類でも軽自動車の場合は日付の表現が違う別パターンの車検証もあるのでOCRの結果が複雑なJSONで返って来る。
しかも、複数ページのデータに対応している高機能なOCRなので、ページの概念もJSONに含まれているのでこれをうまいこと処理する必要があったのだ。
VBA_JSONを使う前は自力で色々とパターンを解析してなんてやって自力パースで処理したが、決め打ちだと折角取得するJSONも有効活用出来ないなぁと思っていたので汎用的にやるため活用させて頂いた。
やってみるとJSONは自由すぎて色々な構造で作成出来るので取得する側でちゃんと把握しないと有効に活用出来ないので楽しく無い。
しかし、これが汎用的に扱えると、プログラミングが非常に楽しくなる。
コメント