mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 08:42:39 +01:00 
			
		
		
		
	Added JsonArray
This commit is contained in:
		| @@ -57,37 +57,22 @@ char* JsonHashTable::getString(char* name) | ||||
|  | ||||
| 	return NULL; | ||||
| } | ||||
| /* | ||||
| char* JsonParserBase::getValueByIndex(int index) | ||||
|  | ||||
| char* JsonArray::getString(int index) | ||||
| { | ||||
| 	for (int i = 1; i < parser.toknext; i++) | ||||
| 	if (json == NULL) return NULL; | ||||
| 	if (tokens == NULL) return NULL; | ||||
| 	if (index < 0) return NULL; | ||||
| 	if (index >= tokens[0].size) return NULL; | ||||
|  | ||||
| 	// skip first token, it's the whole object | ||||
| 	int currentToken = 1; | ||||
|  | ||||
| 	for (int i = 0; i < index; i++) | ||||
| 	{ | ||||
| 		if (index == 0) | ||||
| 		{ | ||||
| 			return buffer + tokens[i].start; | ||||
| 		} | ||||
|  | ||||
| 		// skip nested objects | ||||
| 		i += getNestedTokenCounts(i); | ||||
|  | ||||
| 		index--; | ||||
| 		// move forward: current + nested tokens | ||||
| 		currentToken += 1 + getNestedTokenCounts(currentToken); | ||||
| 	} | ||||
|  | ||||
| 	return NULL; | ||||
| 	return json + tokens[currentToken].start; | ||||
| } | ||||
|  | ||||
| int JsonParserBase::getArraySize() | ||||
| { | ||||
| 	int size = 0; | ||||
|  | ||||
| 	for (int i = 1; i < parser.toknext; i++) | ||||
| 	{ | ||||
| 		// skip nested objects | ||||
| 		i += getNestedTokenCounts(i); | ||||
|  | ||||
| 		size++; | ||||
| 	} | ||||
|  | ||||
| 	return size; | ||||
| } | ||||
| */ | ||||
| @@ -10,6 +10,8 @@ | ||||
| #include <Arduino.h> | ||||
| #include "utility/jsmn.h" | ||||
|  | ||||
| class JsonArray; | ||||
|  | ||||
| class JsonObjectBase | ||||
| { | ||||
| public: | ||||
| @@ -51,6 +53,7 @@ public: | ||||
| 	} | ||||
|  | ||||
| 	char* getString(char* key); | ||||
| 	JsonArray getArray(char* key); | ||||
|  | ||||
| private: | ||||
|  | ||||
| @@ -61,10 +64,47 @@ private: | ||||
| 	} | ||||
| }; | ||||
|  | ||||
| class JsonArray : public JsonObjectBase | ||||
| { | ||||
| 	friend class JsonParserBase; | ||||
|  | ||||
| public: | ||||
|  | ||||
| public: | ||||
|  | ||||
| 	JsonArray() | ||||
| 	{ | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	char* getString(int index); | ||||
| 	 | ||||
| 	int getLength() | ||||
| 	{ | ||||
| 		return tokens != NULL ? tokens[0].size : 0; | ||||
| 	} | ||||
|  | ||||
| private: | ||||
|  | ||||
| 	JsonArray(char* json, jsmntok_t* tokens) | ||||
| 		: JsonObjectBase(json, tokens) | ||||
| 	{ | ||||
|  | ||||
| 	} | ||||
| }; | ||||
|  | ||||
| class JsonParserBase | ||||
| { | ||||
| public: | ||||
|  | ||||
| 	JsonArray parseArray(char* json) | ||||
| 	{ | ||||
| 		if (!parse(json) || tokens[0].type != JSMN_ARRAY) | ||||
| 			return JsonArray(); | ||||
|  | ||||
| 		return JsonArray(json, tokens); | ||||
| 	} | ||||
|  | ||||
| 	JsonHashTable parseHashTable(char* json) | ||||
| 	{ | ||||
| 		if (!parse(json) || tokens[0].type != JSMN_OBJECT) | ||||
| @@ -72,7 +112,7 @@ public: | ||||
|  | ||||
| 		return JsonHashTable(json, tokens); | ||||
| 	} | ||||
|  | ||||
| 	 | ||||
| protected: | ||||
|  | ||||
| 	JsonParserBase(jsmntok_t* tokens, int maxTokenCount) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user