forked from bblanchon/ArduinoJson
Added comments
This commit is contained in:
@ -1,3 +1,7 @@
|
|||||||
|
/*
|
||||||
|
* Arduino JSON library
|
||||||
|
* Benoit Blanchon 2014 - MIT License
|
||||||
|
*/
|
||||||
|
|
||||||
#include "JsonToken.h"
|
#include "JsonToken.h"
|
||||||
|
|
||||||
@ -5,14 +9,19 @@ using namespace ArduinoJson::Parser;
|
|||||||
|
|
||||||
JsonToken JsonToken::nextSibling() const
|
JsonToken JsonToken::nextSibling() const
|
||||||
{
|
{
|
||||||
|
// start with current token
|
||||||
jsmntok_t* t = token;
|
jsmntok_t* t = token;
|
||||||
|
|
||||||
|
// count the number of token to skip
|
||||||
int yetToVisit = 1;
|
int yetToVisit = 1;
|
||||||
|
|
||||||
|
// skip all nested tokens
|
||||||
while (yetToVisit)
|
while (yetToVisit)
|
||||||
{
|
{
|
||||||
yetToVisit += t->size - 1;
|
yetToVisit += t->size - 1;
|
||||||
t++;
|
t++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// build a JsonToken at the new location
|
||||||
return JsonToken(json, t);
|
return JsonToken(json, t);
|
||||||
}
|
}
|
@ -11,6 +11,8 @@
|
|||||||
|
|
||||||
using namespace ArduinoJson::Parser;
|
using namespace ArduinoJson::Parser;
|
||||||
|
|
||||||
|
// Convert the JsonValue to a bool.
|
||||||
|
// Returns false if the JsonValue is not a primitve.
|
||||||
JsonValue::operator bool()
|
JsonValue::operator bool()
|
||||||
{
|
{
|
||||||
if (!isPrimitive()) return 0;
|
if (!isPrimitive()) return 0;
|
||||||
@ -30,24 +32,50 @@ JsonValue::operator bool()
|
|||||||
return strtol(text, 0, 0) != 0;
|
return strtol(text, 0, 0) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Convert the JsonValue to a floating point value.
|
||||||
|
// Returns false if the JsonValue is not a number.
|
||||||
JsonValue::operator double()
|
JsonValue::operator double()
|
||||||
{
|
{
|
||||||
return isPrimitive() ? strtod(getText(), 0) : 0;
|
return isPrimitive() ? strtod(getText(), 0) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Convert the JsonValue to a floating point value.
|
||||||
|
// Returns false if the JsonValue is not a number.
|
||||||
JsonValue::operator long()
|
JsonValue::operator long()
|
||||||
{
|
{
|
||||||
return isPrimitive() ? strtol(getText(), 0, 0) : 0;
|
return isPrimitive() ? strtol(getText(), 0, 0) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Convert the JsonValue to a string.
|
||||||
|
// Returns 0 if the JsonValue is not a string.
|
||||||
JsonValue::operator char*()
|
JsonValue::operator char*()
|
||||||
{
|
{
|
||||||
return isString() || isPrimitive() ? getText() : 0;
|
return isString() || isPrimitive() ? getText() : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
// Get the nested value at the specified index.
|
||||||
* Returns the token for the value associated with the specified key
|
// Returns an invalid JsonValue if the current value is not an array.
|
||||||
*/
|
JsonValue JsonValue::operator[](int index)
|
||||||
|
{
|
||||||
|
// sanity check
|
||||||
|
if (index < 0 || !isArray() || index >= childrenCount())
|
||||||
|
return null();
|
||||||
|
|
||||||
|
// skip first token, it's the whole object
|
||||||
|
JsonToken runningToken = firstChild();
|
||||||
|
|
||||||
|
// skip all tokens before the specified index
|
||||||
|
for (int i = 0; i < index; i++)
|
||||||
|
{
|
||||||
|
// move forward: current + nested tokens
|
||||||
|
runningToken = runningToken.nextSibling();
|
||||||
|
}
|
||||||
|
|
||||||
|
return runningToken;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the nested value matching the specified index.
|
||||||
|
// Returns an invalid JsonValue if the current value is not an object.
|
||||||
JsonValue JsonValue::operator[](const char* desiredKey)
|
JsonValue JsonValue::operator[](const char* desiredKey)
|
||||||
{
|
{
|
||||||
// sanity check
|
// sanity check
|
||||||
@ -80,25 +108,3 @@ JsonValue JsonValue::operator[](const char* desiredKey)
|
|||||||
// nothing found, return NULL
|
// nothing found, return NULL
|
||||||
return null();
|
return null();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Returns the token for the value at the specified index
|
|
||||||
*/
|
|
||||||
JsonValue JsonValue::operator[](int index)
|
|
||||||
{
|
|
||||||
// sanity check
|
|
||||||
if (index < 0 || !isArray() || index >= childrenCount())
|
|
||||||
return null();
|
|
||||||
|
|
||||||
// skip first token, it's the whole object
|
|
||||||
JsonToken runningToken = firstChild();
|
|
||||||
|
|
||||||
// skip all tokens before the specified index
|
|
||||||
for (int i = 0; i < index; i++)
|
|
||||||
{
|
|
||||||
// move forward: current + nested tokens
|
|
||||||
runningToken = runningToken.nextSibling();
|
|
||||||
}
|
|
||||||
|
|
||||||
return runningToken;
|
|
||||||
}
|
|
@ -45,7 +45,7 @@ namespace ArduinoJson
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Convert the JsonValue to a bool.
|
// Convert the JsonValue to a bool.
|
||||||
// Returns false if the JsonValue is not a boolean.
|
// Returns false if the JsonValue is not a primitve.
|
||||||
operator bool();
|
operator bool();
|
||||||
|
|
||||||
// Convert the JsonValue to a floating point value.
|
// Convert the JsonValue to a floating point value.
|
||||||
|
Reference in New Issue
Block a user