ESP32-WROOM-32でJSONを扱うのは難しくない

こんにちはAIソリューション部のさかじです。 ESP32-WROOM-32のようにネットワークに接続できる場合サーバとデータをやりとりする場合にJSONを扱うことがあると思います。しかし、組込みでは文字列の扱いはライブラリが無いと以外と面倒です。そこでArduino IDE向けに提供されているArduinoJSONをご紹介します。

環境

  • MacBook Pro(macOS High Sierra 10.13.6)
  • micro USB-Bメス ケーブル(使用するPC/Macに合わせてご用意ください)
  • Arduino IDE(V1.8.7)
  • ESP32-DevKitC ESP-WROOM-32開発ボード
  • ArduinoJson バージョン6.10.0

準備

  • Arduino IDEのメニューから"スケッチ" - "ライブラリをインクルード" - "ライブラリを管理"を選択

    ライブラリを管理を選択

  • ”Arduinojson"を検索し、インストールします。

    ライブラリマネージャ

JSON生成

インクルード

#include <ArduinoJson.h>

初期化

  StaticJsonDocument<200> doc;

生成

{"hello":"world"}と生成したい場合には

  doc["hello"] = "world";
  serializeJson(doc, Serial);

JSON分解

{"hello":"world"}のJSONを取り扱う場合

インクルード

#include <ArduinoJson.h>

初期化

  StaticJsonDocument<200> doc;
  char json[] = "{\"hello\":\"world\"}";

分解

  JsonObject object = doc.as<JsonObject>();
  deserializeJson(doc, json);

データ取り出し

  const char* world = doc["hello"];

参考サイト

https://arduinojson.org/v6/api/jsonobject/

最後に

JavaScriptなどはこの様な面倒な処理はないため若干面倒なイメージがあります。組込み経験者からはこのライブラリを使うことでこんなに簡単にJSONを扱えるのは嬉しいですね。本ライブラリを使うことでサーバとのやりとりの労力がかなり軽減されると思います。