diff --git a/JsonGenerator/JsonObjectBase.cpp b/JsonGenerator/JsonObjectBase.cpp index c63931f5..23efe612 100644 --- a/JsonGenerator/JsonObjectBase.cpp +++ b/JsonGenerator/JsonObjectBase.cpp @@ -39,7 +39,7 @@ size_t JsonObjectBase::printTo(Print& p) const return n; } -JsonObjectBase::KeyValuePair* JsonObjectBase::getMatchingPair(char const* key) const +JsonObjectBase::KeyValuePair* JsonObjectBase::getMatchingPair(JsonKey key) const { KeyValuePair* p = items; @@ -54,14 +54,15 @@ JsonObjectBase::KeyValuePair* JsonObjectBase::getMatchingPair(char const* key) c return 0; } -JsonValue& JsonObjectBase::operator[](char const* key) +JsonValue& JsonObjectBase::operator[](JsonKey key) { KeyValuePair* match = getMatchingPair(key); - JsonValue* value; if (match) return match->value; + JsonValue* value; + if (count < capacity) { items[count].key = key; @@ -77,7 +78,7 @@ JsonValue& JsonObjectBase::operator[](char const* key) return *value; } -bool JsonObjectBase::containsKey(char const* key) const +bool JsonObjectBase::containsKey(JsonKey key) const { return getMatchingPair(key) != 0; } \ No newline at end of file diff --git a/JsonGenerator/JsonObjectBase.h b/JsonGenerator/JsonObjectBase.h index baa56cd0..2cc293f7 100644 --- a/JsonGenerator/JsonObjectBase.h +++ b/JsonGenerator/JsonObjectBase.h @@ -12,22 +12,23 @@ namespace ArduinoJson { namespace Generator { + typedef const char* JsonKey; + class JsonObjectBase : public JsonPrintable { public: + JsonValue& operator[](JsonKey); - JsonValue& operator[](const char*); - - bool containsKey(const char*) const; + bool containsKey(JsonKey) const; template - void add(const char* key, T value) + void add(JsonKey key, T value) { operator[](key) = value; } template - void add(const char* key, double value) + void add(JsonKey key, double value) { operator[](key).set(value); } @@ -40,7 +41,7 @@ namespace ArduinoJson struct KeyValuePair { - const char* key; + JsonKey key; JsonValue value; }; @@ -55,7 +56,7 @@ namespace ArduinoJson static JsonValue nullValue; - KeyValuePair* getMatchingPair(const char* key) const; + KeyValuePair* getMatchingPair(JsonKey key) const; }; } } \ No newline at end of file