こんにちは、blueです。
前回はVBAを用いたHTTPリクエストを行いました。
前回の記事はこちら
この方法でOpenWeatherMapから現在の天気データ一式を取得することはできました。
ただし、このままだとこの中の任意のデータを取り出すことは困難です。
その為今回はJSON形式で書かれた文字列をJavaScriptオブジェクトとして利用するJSONパースについて説明します。
JSONパースって何?と思われるかもしれませんがなるべくわかりやすく説明しますので勉強していってください。
なお今回の記事は以下の書籍を参考にしています。
pythonですが会話形式で非常にわかりやすく書かれている書籍です。webAPIやスクレイピングを一から理解できる内容になっています。
JSONパースとは
パースとは構文解析と呼ばれ単純な文字列を構造化する手続きのことです。
これだと少しわかりにくいですよね。
ただ建物の外観や内装を立体的な絵にすることを建築業界ではパースというようです。
これだとわかりやすいですね。
一方JSONはJavaScriptで書かれたデータ形式のことでした。
データはこの状態でも取り出すことができるのですが自分で細かい処理を書く必要が出てきます。
そこで出てくるのがJSONパースです。
JSONパースはJSONをJavaScriptのオブジェクト構造に変換することを言います。
JavaScriptのオブジェクト構造に変換できると、データを階層的に調べることができるようになります。
具体的な例は以降で説明します。
JSONのもとになるJavaScriptの書籍は以下がお勧めです。JavaScriptの基本構造からJSON,Web APIまで含めた内容が記載されています。入門書としてよい選択肢になると思います。
VBAでのJSONパース
VBAでJSONパースを行う方法は「VBA-JSON」を導入することです。
「VBA-JSON」はVBA用に作られた標準モジュールで、連想配列の機能を使ってJavaScriptのオブジェクト構造を作り出してくれます。
なおこの機能を使うには「VBA-JSON」のインポートとMicrosoft Runtimeの設定が必要になるので次に説明します。
VBA-JSONの導入方法
・まずは以下から「VBA-JSON」をダウンロードします。
VBA-tools/VBA-JSON: JSON conversion and parsing for VBA
・以下の赤枠の「Code」→「Download ZIP」をクリックします。
・ダウンロードファイルを展開したのち、その中に含まれているJsonConverter.basを以下のように自分のVBAプロジェクトにインポートします。
・また以下の方法でMicrosoft Scripting Runtimeの参照設定を追加します。
これでJSONパースする為の準備は完了です。
VBA-JSONからのデータ取得
VBA-JSONを用いたJSONデータの取得方法としては以下の2つがあります。
JSONパース語のデータをすべて出力
JsonConverter.ParseJson(JSON文字列)で得られたObjectを出力すればOKです。
返されるオブジェクトはDictionary型になります。
JSONパース後のデータから特定の値を出力
これは上記で取得したDictionary型のオブジェクト処理になります。
jsonObj(“key”)でkeyに該当する値を取得することができます。
また中の配列は(Index)で取得することができます。
これらの方法で任意の出たを取得することができます。
参考
ネット上にはJSONデータを見栄えよく整形して表示してくれるサイトがあります。
代表的なものには以下があります。
JSONきれい ~JSON整形ツール~ – instant tools
JSON Pretty Linter – JSONの整形と構文チェック – SYNCER
これらを使えば取得したデータが多くてもデータ構造の確認がしやすくなります。
今回のまとめ
今回はJSON形式で書かれた文字列をJavaScriptオブジェクトとして利用するJSONパースとVBAへの導入方法について説明しました。
次回は最後でHTTPリクエストで得られたJSON形式のデータを処理するコードについて紹介します。
pythonですが会話形式で非常にわかりやすく書かれている書籍です。webAPIやスクレイピングを一から理解できる内容になっています。
Selenium-VBAでのWebスクレイピングに関する記事はこちらをどうぞ
【ExcelVBA‐Selenium】【永久保存版】スクレイピングに必要なSeleniumのインストール方法教えます
【Selenium-VBA】Yahooメールへのログイン方法をわかりやすく説明する
ChromeでのWebスレイピングをできる限りわかりやすく説明する(Excel VBA)
【ExcelVBA‐Selenium】Chrome driverのバージョンエラーが出た時の対処法(2021/10/7更新)
【Selenium-VBA】Seleniumを用いたスクレイピングでテーブル情報を取得する1
【Selenium-VBA】スクレイピングをするのに必要なHTMLについて説明します1
【Selenim-VBA】起動済みのChromeを用いてSeleniumによるスクレイピングを行う
【Selenium-VBA】JavaScriptを使ってスクレイピングをしてみる1
【VBA】SeleniumBasicにおけるクラス、メソッド、プロパティ一覧(日本語版)
Web-APIを用いたデータ取得に関する記事はこちらをどうぞ
【VBA】Web APIを使ってデータを取得する(OpenWeatherMap)1
【VBA】Web APIを使って時間別天気予報を取得する(気象庁API)
【VBA】Web APIを使ってLINE通知を行う(LINE Notify)1
コメント