“JsonParserExample”的版本间的差异
来自YFRobotwiki
(以“ Json库 <pre> // Copyright Benoit Blanchon 2014-2016 // MIT License // // Arduino JSON library // https://github.com/bblanchon/ArduinoJson // If you like thi...”为内容创建页面) |
|||
第13行: | 第13行: | ||
#include <ArduinoJson.h> | #include <ArduinoJson.h> | ||
− | |||
− | |||
void setup() { | void setup() { | ||
− | Serial.begin( | + | Serial.begin(9600); |
while (!Serial) { | while (!Serial) { | ||
// wait serial port initialization | // 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); | ||
} | } | ||
2016年8月22日 (一) 15:41的最后版本
// 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论坛