如何在arduino中创建嵌套对象JSON
How to create a nested object JSON in arduino
我正在处理 nrf24l01 网络。我想像这样在 JSON 字符串中存储来自传感器节点的值(如 id、value temp、value humid)。
我的字符串:
{
"1": {//this is a ID from node
"Temp": "value",
"Humid": "value"
},
"2": {
"Temp": "value",
"Humid": "value"
}
}
我可以创建一个对象并从温度和湿度中添加值,但我不知道如何创建“1”/* ID /*
我的代码
void loop()
{
network.update();
if(network.available())
{
RF24NetworkHeader header;
network.read(header, &pack0, sizeof(pack0));
if (header.from_node == 1)//this is the ID , return 1, 2, ....
{
object["ID"] = header.from_node;
value["Temperature"] = pack0.temperature;
value["Humidity"] = pack0.humidity;
value["Soil"] = pack0.soil;
serializeJsonPretty(object, Serial);
Serial.println(""); }
else if (header.from_node == 2)
{
object["ID"] = header.from_node;
value["Temperature"] = pack0.temperature;
value["Humidity"] = pack0.humidity;
value["Soil"] = pack0.soil;
serializeJsonPretty(object, Serial);
Serial.println("");
}
}
}
您可以使用 createnestedobject
,同时请记住,您是在循环中创建嵌套的 json 对象,因此您需要注意 Json 文档的大小(256
).
编辑:例如,当您的嵌套对象超过固定值时,您可以使用 clear()
函数清除 JSON 对象。
#define MAX_ELEMENTS 10
int receive_count = 0;
StaticJsonDocument<256> doc;
JsonObject object = doc.to<JsonObject>();
void loop()
{
network.update();
if (network.available())
{
RF24NetworkHeader header;
network.read(header, &pack0, sizeof(pack0));
if (header.from_node)
{
JsonObject ID = object.createNestedObject(String(header.from_node));
ID["Temperature"] = pack0.temperature;
ID["Humidity"] = pack0.humidity;
ID["Soil"] = pack0.soil;
serializeJsonPretty(object, Serial);
Serial.println("");
receive_count++;
//reset counter if reached and clear object
if (receive_count >= MAX_ELEMENTS)
{
doc.clear();
object = doc.to<JsonObject>();
receive_count = 0;
}
}
}
}
我正在处理 nrf24l01 网络。我想像这样在 JSON 字符串中存储来自传感器节点的值(如 id、value temp、value humid)。 我的字符串:
{
"1": {//this is a ID from node
"Temp": "value",
"Humid": "value"
},
"2": {
"Temp": "value",
"Humid": "value"
}
}
我可以创建一个对象并从温度和湿度中添加值,但我不知道如何创建“1”/* ID /*
我的代码
void loop()
{
network.update();
if(network.available())
{
RF24NetworkHeader header;
network.read(header, &pack0, sizeof(pack0));
if (header.from_node == 1)//this is the ID , return 1, 2, ....
{
object["ID"] = header.from_node;
value["Temperature"] = pack0.temperature;
value["Humidity"] = pack0.humidity;
value["Soil"] = pack0.soil;
serializeJsonPretty(object, Serial);
Serial.println(""); }
else if (header.from_node == 2)
{
object["ID"] = header.from_node;
value["Temperature"] = pack0.temperature;
value["Humidity"] = pack0.humidity;
value["Soil"] = pack0.soil;
serializeJsonPretty(object, Serial);
Serial.println("");
}
}
}
您可以使用 createnestedobject
,同时请记住,您是在循环中创建嵌套的 json 对象,因此您需要注意 Json 文档的大小(256
).
编辑:例如,当您的嵌套对象超过固定值时,您可以使用 clear()
函数清除 JSON 对象。
#define MAX_ELEMENTS 10
int receive_count = 0;
StaticJsonDocument<256> doc;
JsonObject object = doc.to<JsonObject>();
void loop()
{
network.update();
if (network.available())
{
RF24NetworkHeader header;
network.read(header, &pack0, sizeof(pack0));
if (header.from_node)
{
JsonObject ID = object.createNestedObject(String(header.from_node));
ID["Temperature"] = pack0.temperature;
ID["Humidity"] = pack0.humidity;
ID["Soil"] = pack0.soil;
serializeJsonPretty(object, Serial);
Serial.println("");
receive_count++;
//reset counter if reached and clear object
if (receive_count >= MAX_ELEMENTS)
{
doc.clear();
object = doc.to<JsonObject>();
receive_count = 0;
}
}
}
}