# Arduino JsonObject MQTT sub&pub command

**URL:** https://forum.ficusonline.com/t/topic/288
**Category:** Firmware
**Created:** [2019 年 3 月 29 日午前 8:13 UTC](https://forum.ficusonline.com/t/topic/288 "2019-03-29T08:13:23Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![tk-fuse](https://forum.ficusonline.com/user_avatar/forum.ficusonline.com/tk-fuse/32/255_2.png) [@tk-fuse](https://forum.ficusonline.com/u/tk-fuse)
#### Post date: [2019 年 3 月 29 日午前 8:13 UTC](https://forum.ficusonline.com/t/topic/288/1 "2019-03-29T08:13:23Z")

</div>

MQTTデバイスのサブスクライブとパブリッシュ双方のデータを全てJSONフォーマットに統一。

> **[JsonObject](https://arduinojson.org/v6/api/jsonobject/)**
>
> ArduinoJson 6 user’s manual. A JSON object is a collection of key-value pair. A JsonObject is a reference to this object, but a JsonDocument owns the data.

フロントエンドであるHome Assistantの照明インターフェイスもJSONフォーマットに対応しているため、調光機能付LED照明の調光レベルとON/OFFコマンドもJSONフォーマットで統一した。

**ex)**

```auto
char* json[50] = "{"brightness":50, "state":"ON"}"

```

## Example

### Create an object and serialize it

```auto
// allocate the memory for the document
const size_t CAPACITY = JSON_OBJECT_SIZE(1);
StaticJsonDocument<CAPACITY> doc;

// create an object
JsonObject object = doc.to<JsonObject>();
object["hello"] = "world";

// serialize the object and send the result to Serial
serializeJson(doc, Serial);

```

### Deserialize a object

```auto
// allocate the memory for the document
const size_t CAPACITY = JSON_OBJECT_SIZE(1);
StaticJsonDocument<CAPACITY> doc;

// deserialize the object
char json[] = "{\"hello\":\"world\"}"; 
deserializeJson(doc, json);

// extract the data
JsonObject object = doc.as<JsonObject>();
const char* world = object["hello"];

```

---

<div class="post-metadata">

### Author: ![tk-fuse](https://forum.ficusonline.com/user_avatar/forum.ficusonline.com/tk-fuse/32/255_2.png) [@tk-fuse](https://forum.ficusonline.com/u/tk-fuse)
#### Post date: [2021 年 7 月 9 日午前 5:07 UTC](https://forum.ficusonline.com/t/topic/288/2 "2021-07-09T05:07:03Z")

</div>

### オンラインアシスタント

以下オンライン上のツールで、任意のJSONフォーマットデータ入力すると、Arduinoへ導入するための最適なパラメータを算出してくれます。

> **[ArduinoJson Assistant 6](https://arduinojson.org/v6/assistant/)**
>
> The ArduinoJson Assistant is an online tool that computes the required JsonDocument capacity for a given document and generates a sample program.

以下Output typeの指定は任意です。

 ![arduinojson_assistant_step1](https://forum.ficusonline.com/uploads/default/original/1X/30203ee4dd247760638c43a46187141e2507da73.png)

以下Step2:JSONのOutputの欄に、導入したいJSONデータを入力して下さい。今回は入れ子データを入力。

 ![arduinojson_assistant_step2](https://forum.ficusonline.com/uploads/default/original/1X/240a6664e96da57809dffe9b5d7fe33b86d3b8f6.png)

最適なパラメータが出力されます。

 ![arduinojson_assistant_step3](https://forum.ficusonline.com/uploads/default/original/1X/09d592697a8eb6870b0830c8ed880de34e4eacf9.png)

以下コードをArduinoスケッチに記述して下さい。

 ![arduinojson_assistant_step4](https://forum.ficusonline.com/uploads/default/original/1X/d4cdac2d0a6ba42085547d053fcf5b29aba65ef9.png)

```auto
StaticJsonDocument<96> doc;

JsonObject id1 = doc.createNestedObject("id1");
id1["hr"] = "65";
id1["spo2"] = "98";
id1["temp"] = "36.56";

serializeJson(doc, output);

```

### JsonDocument::createNestedObject() 入れ子データ

> **[JsonDocument::createNestedObject()](https://arduinojson.org/v6/api/jsondocument/createnestedobject/)**
>
> ArduinoJson 6 user’s manual. The function JsonDocument::createNestedObject() creates a JsonObject and adds it in the JsonDocument.
