diff --git a/include/ArduinoJson/JsonValue.hpp b/include/ArduinoJson/JsonValue.hpp index 3101c68a..015c105c 100644 --- a/include/ArduinoJson/JsonValue.hpp +++ b/include/ArduinoJson/JsonValue.hpp @@ -56,11 +56,12 @@ class JsonValue { operator JsonArray &() const; operator JsonObject &() const; - JsonArray &asArray() { return static_cast(*this); }; - JsonObject &asObject() { return static_cast(*this); }; + const char *asString() const { return this->as(); } + JsonArray &asArray() const { return this->as(); }; + JsonObject &asObject() const { return this->as(); }; template - T as() { + T as() const { return static_cast(*this); } @@ -78,4 +79,14 @@ class JsonValue { Internals::JsonValueContent _content; static JsonValue _invalid; }; + +template +inline bool operator==(const JsonValue &left, T right) { + return left.as() == right; +} + +template +inline bool operator==(T left, const JsonValue &right) { + return left == right.as(); +} }