diff --git a/JsonArray.cpp b/JsonArray.cpp index 38322089..f8838df5 100644 --- a/JsonArray.cpp +++ b/JsonArray.cpp @@ -41,6 +41,11 @@ JsonArray JsonArray::getArray(int index) return JsonArray(json, getToken(index)); } +double JsonArray::getDouble(int index) +{ + return getDoubleFromToken(getToken(index)); +} + JsonHashTable JsonArray::getHashTable(int index) { return JsonHashTable(json, getToken(index)); diff --git a/JsonArray.h b/JsonArray.h index 49792fa3..e7f29c10 100644 --- a/JsonArray.h +++ b/JsonArray.h @@ -26,7 +26,8 @@ public: return tokens != 0 ? tokens[0].size : 0; } - JsonArray getArray(int index); + JsonArray getArray(int index); + double getDouble(int index); JsonHashTable getHashTable(int index); long getLong(int index); char* getString(int index); diff --git a/JsonHashTable.cpp b/JsonHashTable.cpp index 806bb879..111f5faf 100644 --- a/JsonHashTable.cpp +++ b/JsonHashTable.cpp @@ -53,6 +53,11 @@ JsonArray JsonHashTable::getArray(char* key) return JsonArray(json, getToken(key)); } +double JsonHashTable::getDouble(char* key) +{ + return getDoubleFromToken(getToken(key)); +} + JsonHashTable JsonHashTable::getHashTable(char* key) { return JsonHashTable(json, getToken(key)); diff --git a/JsonHashTable.h b/JsonHashTable.h index 623d0f17..560faace 100644 --- a/JsonHashTable.h +++ b/JsonHashTable.h @@ -22,6 +22,7 @@ public: JsonHashTable() {} JsonArray getArray(char* key); + double getDouble(char* key); JsonHashTable getHashTable(char* key); long getLong(char* key); char* getString(char* key); diff --git a/JsonObjectBase.cpp b/JsonObjectBase.cpp index 0b8fb84f..cee98bab 100644 --- a/JsonObjectBase.cpp +++ b/JsonObjectBase.cpp @@ -6,7 +6,7 @@ #include "JsonObjectBase.h" -#include // for strtol +#include // for strtol, strtod int JsonObjectBase::getNestedTokenCount(jsmntok_t* token) { @@ -20,10 +20,16 @@ int JsonObjectBase::getNestedTokenCount(jsmntok_t* token) return count; } +double JsonObjectBase::getDoubleFromToken(jsmntok_t* token) +{ + if (token->type != JSMN_PRIMITIVE) return 0; + + return strtod(json + token->start, 0); +} + long JsonObjectBase::getLongFromToken(jsmntok_t* token) { - if (token->type != JSMN_PRIMITIVE) - return 0; + if (token->type != JSMN_PRIMITIVE) return 0; return strtol(json + token->start, 0, 0); } diff --git a/JsonObjectBase.h b/JsonObjectBase.h index 85bd3243..9ca779da 100644 --- a/JsonObjectBase.h +++ b/JsonObjectBase.h @@ -38,8 +38,10 @@ protected: } static int getNestedTokenCount(jsmntok_t* token); - char* getStringFromToken(jsmntok_t* token); + + double getDoubleFromToken(jsmntok_t* token); long getLongFromToken(jsmntok_t* token); + char* getStringFromToken(jsmntok_t* token); char* json; jsmntok_t* tokens;