2014-07-16 13:26:11 +02:00
|
|
|
/*
|
|
|
|
* Arduino JSON library
|
|
|
|
* Benoit Blanchon 2014 - MIT License
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <stdlib.h> // for strtol, strtod
|
|
|
|
#include "JsonArray.h"
|
|
|
|
#include "JsonHashTable.h"
|
|
|
|
#include "JsonValue.h"
|
|
|
|
|
|
|
|
using namespace ArduinoJson::Parser;
|
2014-07-18 15:43:20 +02:00
|
|
|
using namespace ArduinoJson::Internal;
|
2014-07-16 13:26:11 +02:00
|
|
|
|
2014-07-18 16:18:03 +02:00
|
|
|
JsonValue JsonValue::operator[](int index)
|
|
|
|
{
|
|
|
|
return JsonArray(json, token)[index];
|
|
|
|
}
|
|
|
|
|
|
|
|
JsonValue JsonValue::operator[](const char* key)
|
|
|
|
{
|
|
|
|
return JsonHashTable(json, token)[key];
|
|
|
|
}
|
|
|
|
|
2014-07-16 13:26:11 +02:00
|
|
|
JsonValue::operator bool()
|
|
|
|
{
|
2014-07-18 15:43:20 +02:00
|
|
|
if (!token.isPrimitive()) return 0;
|
|
|
|
|
|
|
|
char *text = token.getText(json);
|
2014-07-16 13:26:11 +02:00
|
|
|
|
|
|
|
// "true"
|
2014-07-18 15:43:20 +02:00
|
|
|
if (text[0] == 't') return true;
|
2014-07-16 13:26:11 +02:00
|
|
|
|
|
|
|
// "false"
|
2014-07-18 15:43:20 +02:00
|
|
|
if (text[0] == 'f') return false;
|
2014-07-16 13:26:11 +02:00
|
|
|
|
|
|
|
// "null"
|
2014-07-18 15:43:20 +02:00
|
|
|
if (text[0] == 'n') return false;
|
2014-07-16 13:26:11 +02:00
|
|
|
|
|
|
|
// number
|
2014-07-18 15:43:20 +02:00
|
|
|
return strtol(text, 0, 0) != 0;
|
2014-07-16 13:26:11 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
JsonValue::operator double()
|
|
|
|
{
|
2014-07-18 15:43:20 +02:00
|
|
|
return token.isPrimitive() ? strtod(token.getText(json), 0) : 0;
|
2014-07-16 13:26:11 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
JsonValue::operator long()
|
|
|
|
{
|
2014-07-18 15:43:20 +02:00
|
|
|
return token.isPrimitive() ? strtol(token.getText(json), 0, 0) : 0;
|
2014-07-16 13:26:11 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
JsonValue::operator char*()
|
|
|
|
{
|
2014-07-18 15:43:20 +02:00
|
|
|
return token.isString() || token.isPrimitive() ? token.getText(json) : 0;
|
2014-07-16 13:26:11 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
JsonValue::operator JsonArray()
|
|
|
|
{
|
2014-07-18 15:43:20 +02:00
|
|
|
return token.isArray()
|
|
|
|
? JsonArray(json, token)
|
|
|
|
: JsonArray::null();
|
2014-07-16 13:26:11 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
JsonValue::operator JsonHashTable()
|
|
|
|
{
|
2014-07-18 15:43:20 +02:00
|
|
|
return token.isObject()
|
|
|
|
? JsonHashTable(json, token)
|
|
|
|
: JsonHashTable::null();
|
2014-07-16 13:26:11 +02:00
|
|
|
}
|