mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 16:14:11 +01:00 
			
		
		
		
	Added JsonArray.getArray()
This commit is contained in:
		| @@ -64,7 +64,7 @@ JsonArray JsonHashTable::getArray(char* key) | |||||||
| 	return JsonArray(json, token); | 	return JsonArray(json, token); | ||||||
| } | } | ||||||
|  |  | ||||||
| char* JsonArray::getString(int index) | jsmntok_t* JsonArray::getToken(int index) | ||||||
| { | { | ||||||
| 	if (json == NULL) return NULL; | 	if (json == NULL) return NULL; | ||||||
| 	if (tokens == NULL) return NULL; | 	if (tokens == NULL) return NULL; | ||||||
| @@ -80,5 +80,11 @@ char* JsonArray::getString(int index) | |||||||
| 		currentToken += 1 + getNestedTokenCounts(currentToken); | 		currentToken += 1 + getNestedTokenCounts(currentToken); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	return json + tokens[currentToken].start; | 	return &tokens[currentToken]; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | JsonArray JsonArray::getArray(int index) | ||||||
|  | { | ||||||
|  | 	jsmntok_t* token = getToken(index); | ||||||
|  | 	return JsonArray(json, token); | ||||||
|  | } | ||||||
| @@ -85,7 +85,13 @@ public: | |||||||
|  |  | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	char* getString(int index); | 	JsonArray getArray(int index); | ||||||
|  |  | ||||||
|  | 	char* getString(int index) | ||||||
|  | 	{ | ||||||
|  | 		jsmntok_t* token = getToken(index); | ||||||
|  | 		return token != NULL ? json + token->start : NULL; | ||||||
|  | 	} | ||||||
| 	 | 	 | ||||||
| 	int getLength() | 	int getLength() | ||||||
| 	{ | 	{ | ||||||
| @@ -99,6 +105,8 @@ private: | |||||||
| 	{ | 	{ | ||||||
|  |  | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	jsmntok_t* getToken(int index); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| class JsonParserBase | class JsonParserBase | ||||||
| @@ -132,11 +140,7 @@ protected: | |||||||
| 	}	 | 	}	 | ||||||
| 	 | 	 | ||||||
| 	bool parse(char* json); | 	bool parse(char* json); | ||||||
| 	/* |  | ||||||
| 	char* getValueByIndex(int index); |  | ||||||
| 	char* getValueByKey(char* name); |  | ||||||
| 	int getArraySize(); |  | ||||||
| 	*/ |  | ||||||
| private: | private: | ||||||
|  |  | ||||||
| 	char* buffer; | 	char* buffer; | ||||||
| @@ -160,37 +164,6 @@ private: | |||||||
| 	 | 	 | ||||||
| 	jsmntok_t tokens[N]; | 	jsmntok_t tokens[N]; | ||||||
| }; | }; | ||||||
| /* |  | ||||||
| template <int N> |  | ||||||
| class JsonArrayParser : public JsonParserBase |  | ||||||
| { |  | ||||||
| public: |  | ||||||
|  |  | ||||||
| 	JsonArrayParser() |  | ||||||
| 		: JsonParserBase(tokens, N + 1) |  | ||||||
| 	{ |  | ||||||
|  |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	bool parse(char* json) |  | ||||||
| 	{ |  | ||||||
| 		return parseAndCheckType(json, JSMN_ARRAY); |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	int getCount() |  | ||||||
| 	{ |  | ||||||
| 		return getArraySize(); |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	char* getValue(int index) |  | ||||||
| 	{ |  | ||||||
| 		return getValueByIndex(index); |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| private: |  | ||||||
|  |  | ||||||
| 	jsmntok_t tokens[N + 1]; |  | ||||||
| }; |  | ||||||
| */ |  | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user