Arduino处理json

date: 2018.03.25; modification:2018.03.25

目录:

使用arduinojson库, 官网: https://arduinojson.org

1 程序

#include <ArduinoJson.h>

DynamicJsonBuffer jsonBuffer;
Serial.begin(115200);
Serial.println("\r\n\n\nStart");

// 序列化(json对象转字符串)
JsonObject& testRoot = jsonBuffer.createObject();
testRoot["key1"] = "value1";
testRoot["key2"] = 12345;
JsonArray& data = testRoot.createNestedArray("data");
data.add(48.756080);
data.add(54321);
String strJson2;
testRoot.printTo(strJson2);
Serial.println(String() + F("Json string:") + strJson2);
Serial.println("\n\n");

// json字符串转对象
String input = "{\"sensor\":\"gps\",\"time\":1351824120,\"data\":[48.756080,2.302038]}";
JsonObject& root = jsonBuffer.parseObject(input);
long   time      = root["time"];
String sensor    = root[String("sensor")];
double latitude  = root["data"][0];
double longitude = root["data"][1];
Serial.println(String() + F("time:") + time);
Serial.println(String() + F("sensor:") + sensor);
Serial.println(String() + F("latitude:") + latitude);
Serial.println(String() + F("longitude:") + longitude);

2 存储消耗

该库对于arduino来说, 吃存储不小, 上面几句代码, 耗用的存储如下(arduino uno数据):

项目使用了 12400 字节,占用了 (38%) 程序存储空间。最大为 32256 字节。
全局变量使用了504字节,(24%)的动态内存,余留1544字节局部变量。最大为2048字节。

其中串口分别占去rom和ram为: 5%, 9%.

算起来: