Files
ArduinoJson/JsonParser/JsonToken.h

89 lines
1.8 KiB
C
Raw Normal View History

2014-07-18 15:43:20 +02:00
/*
* Arduino JSON library
* Benoit Blanchon 2014 - MIT License
*/
#pragma once
#include "jsmn.h"
namespace ArduinoJson
{
namespace Internal
{
class JsonToken
{
public:
JsonToken(jsmntok_t* token)
:token(token)
{
}
char* getText(char* json)
{
json[token->end] = 0;
return json + token->start;
}
JsonToken firstChild() const
2014-07-18 15:43:20 +02:00
{
return JsonToken(token + 1);
2014-07-18 15:43:20 +02:00
}
JsonToken nextSibling() const
2014-07-18 15:43:20 +02:00
{
return JsonToken(token + 1 + nestedTokenCount());
2014-07-18 15:43:20 +02:00
}
bool operator!= (const JsonToken& other)
{
return token != other.token;
}
int size()
{
return token->size;
}
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;
}
static JsonToken null()
{
return JsonToken(0);
}
private:
jsmntok_t* token;
int nestedTokenCount() const;
2014-07-18 15:43:20 +02:00
};
}
}