mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 16:14:11 +01:00 
			
		
		
		
	Added JsonObjectBase::containsKey()
This commit is contained in:
		| @@ -4,15 +4,12 @@ | ||||
| */ | ||||
|  | ||||
| #include "JsonObjectBase.h" | ||||
| #include <string.h> // for strcmp | ||||
|  | ||||
| using namespace ArduinoJson::Generator; | ||||
| using namespace ArduinoJson::Internals; | ||||
|  | ||||
|  | ||||
| JsonValue JsonObjectBase::nullValue; | ||||
|  | ||||
|  | ||||
| size_t JsonObjectBase::printTo(Print& p) const | ||||
| { | ||||
|     size_t n = 0; | ||||
| @@ -47,9 +44,7 @@ JsonValue& JsonObjectBase::operator[](char const* key) | ||||
|  | ||||
|     for (int i = count; i > 0; --i) | ||||
|     { | ||||
|         bool keyMatches = strcmp(p->key, key) == 0; | ||||
|  | ||||
|         if (keyMatches) | ||||
|         if (p->matches(key)) | ||||
|             return p->value; | ||||
|  | ||||
|         p++; | ||||
| @@ -70,4 +65,19 @@ JsonValue& JsonObjectBase::operator[](char const* key) | ||||
|  | ||||
|     value->reset(); | ||||
|     return *value; | ||||
| } | ||||
|  | ||||
| bool JsonObjectBase::containsKey(char const* key) const | ||||
| { | ||||
|     KeyValuePair* p = items; | ||||
|  | ||||
|     for (int i = count; i > 0; --i) | ||||
|     { | ||||
|         if (p->matches(key)) | ||||
|             return true; | ||||
|  | ||||
|         p++; | ||||
|     } | ||||
|  | ||||
|     return false; | ||||
| } | ||||
| @@ -7,6 +7,7 @@ | ||||
|  | ||||
| #include "JsonPrintable.h" | ||||
| #include "EscapedString.h" | ||||
| #include <string.h> // for strcmp | ||||
|  | ||||
| namespace ArduinoJson | ||||
| { | ||||
| @@ -18,6 +19,8 @@ namespace ArduinoJson | ||||
|  | ||||
|             JsonValue& operator[](const char*); | ||||
|  | ||||
|             bool containsKey(const char*) const; | ||||
|  | ||||
|             template<typename T> | ||||
|             void add(const char* key, T value) | ||||
|             { | ||||
| @@ -40,6 +43,11 @@ namespace ArduinoJson | ||||
|             { | ||||
|                 const char* key; | ||||
|                 JsonValue   value; | ||||
|  | ||||
|                 bool matches(const char* candidateKey) const | ||||
|                 { | ||||
|                     return strcmp(key, candidateKey) == 0; | ||||
|                 } | ||||
|             }; | ||||
|  | ||||
|             JsonObjectBase(KeyValuePair* items, int capacity) | ||||
|   | ||||
| @@ -35,12 +35,16 @@ namespace JsonGeneratorTests | ||||
|  | ||||
|         void mustContain(const char* key, const char* expected) | ||||
|         { | ||||
|             Assert::IsTrue(object.containsKey(key)); | ||||
|  | ||||
|             const char* actual = object[key]; | ||||
|             Assert::AreEqual(expected, actual); | ||||
|         } | ||||
|  | ||||
|         void mustNotContain(const char* key) | ||||
|         { | ||||
|             Assert::IsFalse(object.containsKey(key)); | ||||
|  | ||||
|             const char* actual = object[key]; | ||||
|             Assert::IsNull(actual); | ||||
|         } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user