Files
ArduinoJson/JsonParser/JsonToken.h
2014-07-19 14:55:16 +02:00

90 lines
1.8 KiB
C++

/*
* Arduino JSON library
* Benoit Blanchon 2014 - MIT License
*/
#pragma once
#include "jsmn.h"
namespace ArduinoJson
{
namespace Parser
{
class JsonToken
{
public:
JsonToken()
: token(0)
{
}
JsonToken(char* json, jsmntok_t* token)
: json(json), token(token)
{
}
char* getText()
{
json[token->end] = 0;
return json + token->start;
}
JsonToken firstChild() const
{
return JsonToken(json, token + 1);
}
JsonToken nextSibling() const;
bool operator!= (const JsonToken& other) const
{
return token != other.token;
}
static JsonToken null()
{
return JsonToken(0, 0);
}
bool isValid()
{
return token != 0;
}
bool isObject()
{
return token != 0 && token->type == JSMN_OBJECT;
}
bool isArray()
{
return token != 0 && token->type == JSMN_ARRAY;
}
bool isPrimitive()
{
return token != 0 && token->type == JSMN_PRIMITIVE;
}
bool isString()
{
return token != 0 && token->type == JSMN_STRING;
}
int childrenCount()
{
return token->size;
}
private:
char* json;
jsmntok_t* token;
};
}
}