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

2019.04.20

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは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

初期化

StaticJsonDocument<200> doc;

生成

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

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

JSON分解

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

インクルード

#include

初期化

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

分解

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

データ取り出し

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

参考サイト

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

最後に

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