【ESP32 Arduino】使用ArduinoJson 7.x库处理JSon数据
ArduinoJson 6.x及其他低版本库,ArduinoJson 7.x库声明JsonDocument发生变化。
需要安装ArduinoJson 7.x库。
/** **************************************************************************************************** * @file json.ino * @author 辛和 * @version V1.0 * @date 2024-6-24 * @brief 公用变量 * @license **************************************************************************************************** * @attention * MCU: ESP32S3 * SOFTWARE: Arduino 2.3.2 * LIBS: ArduinoJson 7.x * 修改说明 * V1.0 20240624 * **************************************************************************************************** * */ #include <ArduinoJson.h>// 使用的是ArduinoJson 7.x void setup() { Serial.begin(115200); // 使用的是ArduinoJson 7.x JsonDocument doc; //声明一个JsonDocument对象 // You can use a String as your JSON input. // WARNING: the string in the input will be duplicated in the JsonDocument. String input = "{\"sensor\":\"gps\",\"time\":1351824120,\"data\":[48.756080,2.302038]}"; deserializeJson(doc, input); // You can use a String as a key to get a member from JsonDocument // No duplication is done. long time = doc[String("time")]; // You can use a String as a key to set a member of a JsonDocument // WARNING: the content of the String will be duplicated in the JsonDocument. doc[String("time")] = time; // You can get the content of a JsonVariant as a String // No duplication is done, at least not in the JsonDocument. String sensor = doc["sensor"]; // Unfortunately, the following doesn't work (issue #118): // sensor = doc["sensor"]; // <- error "ambiguous overload for 'operator='" // As a workaround, you need to replace by: sensor = doc["sensor"].as<String>(); // You can set a String as the content of a JsonVariant // WARNING: the content of the String will be duplicated in the JsonDocument. String key = "sensor"; doc[key] = sensor; // It works with serialized() too: doc["sensor"] = serialized(sensor); // You can also concatenate strings // WARNING: the content of the String will be duplicated in the JsonDocument. doc[String("sen") + "sor"] = String("gp") + "s"; // You can compare the content of a JsonObject with a String if (doc["sensor"] == sensor) { // ... } // 遍历 JsonDocument 中的所有键值对 for (JsonPair kv : doc.as<JsonObject>()) { Serial.print("Key: "); Serial.println(kv.key().c_str()); Serial.print("Value: "); //Serial.print( typeof(kv.value())); Serial.println(kv.value().as<String>()); key = kv.key().c_str(); // char[]转String Serial.println(doc[key].as<String>()); // JsonVariant转String } // Lastly, you can print the resulting JSON to a String String output; serializeJson(doc, output); Serial.println(output); } void loop() { // not used in this example }

浙公网安备 33010602011771号