diff --git a/JsonArray.cpp b/JsonArray.cpp index 6725f594..38322089 100644 --- a/JsonArray.cpp +++ b/JsonArray.cpp @@ -46,7 +46,12 @@ JsonHashTable JsonArray::getHashTable(int index) return JsonHashTable(json, getToken(index)); } +long JsonArray::getLong(int index) +{ + return getLongFromToken(getToken(index)); +} + char* JsonArray::getString(int index) { - return getTokenString(getToken(index)); + return getStringFromToken(getToken(index)); } \ No newline at end of file diff --git a/JsonArray.h b/JsonArray.h index c848d362..49792fa3 100644 --- a/JsonArray.h +++ b/JsonArray.h @@ -28,6 +28,7 @@ public: JsonArray getArray(int index); JsonHashTable getHashTable(int index); + long getLong(int index); char* getString(int index); private: diff --git a/JsonHashTable.cpp b/JsonHashTable.cpp index 21ed0c22..806bb879 100644 --- a/JsonHashTable.cpp +++ b/JsonHashTable.cpp @@ -31,7 +31,7 @@ jsmntok_t* JsonHashTable::getToken(char* desiredKey) for (int i = 0; i < tokens[0].size / 2 ; i++) { // get key token string - char* key = getTokenString(currentToken); + char* key = getStringFromToken(currentToken); // compare with desired name if (strcmp(desiredKey, key) == 0) @@ -58,7 +58,12 @@ JsonHashTable JsonHashTable::getHashTable(char* key) return JsonHashTable(json, getToken(key)); } +long JsonHashTable::getLong(char* key) +{ + return getLongFromToken(getToken(key)); +} + char* JsonHashTable::getString(char* key) { - return getTokenString(getToken(key)); + return getStringFromToken(getToken(key)); } \ No newline at end of file diff --git a/JsonHashTable.h b/JsonHashTable.h index f9ebd335..623d0f17 100644 --- a/JsonHashTable.h +++ b/JsonHashTable.h @@ -23,6 +23,7 @@ public: JsonArray getArray(char* key); JsonHashTable getHashTable(char* key); + long getLong(char* key); char* getString(char* key); private: diff --git a/JsonObjectBase.cpp b/JsonObjectBase.cpp index 345e2b67..0b8fb84f 100644 --- a/JsonObjectBase.cpp +++ b/JsonObjectBase.cpp @@ -6,6 +6,8 @@ #include "JsonObjectBase.h" +#include // for strtol + int JsonObjectBase::getNestedTokenCount(jsmntok_t* token) { int count = 0; @@ -18,7 +20,15 @@ int JsonObjectBase::getNestedTokenCount(jsmntok_t* token) return count; } -char* JsonObjectBase::getTokenString(jsmntok_t* token) +long JsonObjectBase::getLongFromToken(jsmntok_t* token) +{ + if (token->type != JSMN_PRIMITIVE) + return 0; + + return strtol(json + token->start, 0, 0); +} + +char* JsonObjectBase::getStringFromToken(jsmntok_t* token) { if (token->type != JSMN_PRIMITIVE && token->type != JSMN_STRING) return 0; diff --git a/JsonObjectBase.h b/JsonObjectBase.h index 3bd8d4be..85bd3243 100644 --- a/JsonObjectBase.h +++ b/JsonObjectBase.h @@ -38,7 +38,8 @@ protected: } static int getNestedTokenCount(jsmntok_t* token); - char* getTokenString(jsmntok_t* token); + char* getStringFromToken(jsmntok_t* token); + long getLongFromToken(jsmntok_t* token); char* json; jsmntok_t* tokens;