From 583589c05c9110bcf02321d56d50f9722ce38600 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Sat, 11 Jan 2014 11:18:53 +0100 Subject: [PATCH] Added JsonArray.getArray() --- ArduinoJsonParser.cpp | 10 +++++++-- ArduinoJsonParser.h | 47 +++++++++---------------------------------- 2 files changed, 18 insertions(+), 39 deletions(-) diff --git a/ArduinoJsonParser.cpp b/ArduinoJsonParser.cpp index 288a092f..a3b54a5a 100644 --- a/ArduinoJsonParser.cpp +++ b/ArduinoJsonParser.cpp @@ -64,7 +64,7 @@ JsonArray JsonHashTable::getArray(char* key) return JsonArray(json, token); } -char* JsonArray::getString(int index) +jsmntok_t* JsonArray::getToken(int index) { if (json == NULL) return NULL; if (tokens == NULL) return NULL; @@ -80,5 +80,11 @@ char* JsonArray::getString(int index) 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); +} \ No newline at end of file diff --git a/ArduinoJsonParser.h b/ArduinoJsonParser.h index a8acda80..7f0f6631 100644 --- a/ArduinoJsonParser.h +++ b/ArduinoJsonParser.h @@ -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() { @@ -99,6 +105,8 @@ private: { } + + jsmntok_t* getToken(int index); }; class JsonParserBase @@ -132,11 +140,7 @@ protected: } bool parse(char* json); - /* - char* getValueByIndex(int index); - char* getValueByKey(char* name); - int getArraySize(); - */ + private: char* buffer; @@ -160,37 +164,6 @@ private: jsmntok_t tokens[N]; }; -/* -template -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