JsonParserExample
来自YFRobotwiki
// Copyright Benoit Blanchon 2014-2016 // MIT License // // Arduino JSON library // https://github.com/bblanchon/ArduinoJson // If you like this project, please add a star! #include <ArduinoJson.h> void setup() { Serial.begin(9600); while (!Serial) { // wait serial port initialization } // Memory pool for JSON object tree.-- 为JSON对象树创建内存池 // // Inside the brackets, 200 is the size of the pool in bytes,-- 200字节为内存是大小 // If the JSON object is more complex, you need to increase that value. -- 如果JSON对象过于复杂,你需要更改这个内存大小 StaticJsonBuffer<200> jsonBuffer; // StaticJsonBuffer allocates memory on the stack, it can be // replaced by DynamicJsonBuffer which allocates in the heap. // -- StaticJsonBuffer 在栈上分配内存,它可以被在对上分配内存的DynamicJsonBuffer所代替 // It's simpler but less efficient. -- DynamicJsonBuffer 简单但效率低 // // DynamicJsonBuffer jsonBuffer; // JSON input string. -- JSON 输入字符串 // // It's better to use a char[] as shown here. -- 最好使用一个char类型 如下所示 // If you use a const char* or a String, ArduinoJson will // have to make a copy of the input in the JsonBuffer. // -- 如果你使用 const char* 或 String, arduinoJson 将不得不使输入数据拷贝成JSON缓冲区数据 char json[] = "{\"sensor\":\"gps\",\"time\":1351824120,\"data\":[48.756080,2.302038]}"; // Root of the object tree. -- 对象树根 // // It's a reference to the JsonObject, the actual bytes are inside the // JsonBuffer with all the other nodes of the object tree. // -- 这是对JsonObject参考,实际字节是JSONBuffer内的对象树的所有其他节点 // Memory is freed when jsonBuffer goes out of scope. -- jsonBuffer超出范围时内存已经被释放了 JsonObject& root = jsonBuffer.parseObject(json); // Test if parsing succeeds. -- 测试是否解析成功 if (!root.success()) { Serial.println("parseObject() failed"); return; } // Fetch values. -- 取值 // // Most of the time, you can rely on the implicit casts. // In other case, you can do root["time"].as<long>(); const char* sensor = root["sensor"]; long time = root["time"]; double latitude = root["data"][0]; double longitude = root["data"][1]; // Print values. -- 打印值 Serial.println(sensor); Serial.println(time); Serial.println(latitude, 6); Serial.println(longitude, 6); } void loop() { // not used in this example }
更多建议和问题欢迎反馈至 YFRobot论坛