diff --git a/include/utils/JsonUtils.h b/include/utils/JsonUtils.h index 9053ab41..c7ab1c61 100644 --- a/include/utils/JsonUtils.h +++ b/include/utils/JsonUtils.h @@ -10,6 +10,8 @@ extern String jsonWriteInt(String& json, String name, int value); extern String jsonWriteFloat(String& json, String name, float value); extern String jsonWriteBool(String& json, String name, boolean value); +extern bool jsonRead(String& json, String key, unsigned long& value); +extern bool jsonRead(String& json, String key, float& value); extern bool jsonRead(String& json, String key, String& value); extern bool jsonRead(String& json, String key, bool& value); extern bool jsonRead(String& json, String key, int& value); diff --git a/src/utils/JsonUtils.cpp b/src/utils/JsonUtils.cpp index 8e9e39a1..a02df298 100644 --- a/src/utils/JsonUtils.cpp +++ b/src/utils/JsonUtils.cpp @@ -12,6 +12,21 @@ void jsonWriteStrDoc(DynamicJsonDocument& doc, String name, String value) { } // new============================================================================== +bool jsonRead(String& json, String key, unsigned long& value) { + bool ret = true; + DynamicJsonDocument doc(JSON_BUFFER_SIZE); + DeserializationError error = deserializeJson(doc, json); + if (error) { + SerialPrint("EE", F("jsonRead"), error.f_str()); + ret = false; + } else if (!doc.containsKey(key)) { + SerialPrint("EE", F("jsonRead"), key + " missing"); + ret = false; + } + value = doc[key].as(); + return ret; +} + bool jsonRead(String& json, String key, float& value) { bool ret = true; DynamicJsonDocument doc(JSON_BUFFER_SIZE);