Added JsonObjectIterator

This commit is contained in:
Benoit Blanchon
2014-07-18 22:40:50 +02:00
parent b75d32e980
commit 851d21e08c
8 changed files with 158 additions and 16 deletions

View File

@ -22,10 +22,9 @@ namespace ArduinoJson
}
const JsonArrayIterator& operator++()
void operator++()
{
token = token.nextSibling();
return *this;
}
JsonValue operator*() const

View File

@ -6,6 +6,7 @@
#pragma once
#include "JsonValue.h"
#include "JsonObjectIterator.h"
namespace ArduinoJson
{
@ -43,6 +44,16 @@ namespace ArduinoJson
return getValue(key).success();
}
JsonObjectIterator begin()
{
return JsonObjectIterator(json, token.firstChild());
}
JsonObjectIterator end()
{
return JsonObjectIterator(json, token.nextSibling());
}
DEPRECATED JsonArray getArray(const char* key);
DEPRECATED bool getBool(const char* key)

View File

@ -0,0 +1,47 @@
/*
* Arduino JSON library
* Benoit Blanchon 2014 - MIT License
*/
#pragma once
#include "JsonValue.h"
#include "JsonPair.h"
#include "JsonToken.h"
namespace ArduinoJson
{
namespace Parser
{
class JsonObjectIterator
{
public:
JsonObjectIterator(char* json, Internal::JsonToken token)
: json(json), token(token)
{
}
void operator++()
{
token = token.nextSibling().nextSibling();
}
JsonPair operator*() const
{
return JsonPair(json, token);
}
bool operator !=(const JsonObjectIterator& other)
{
return token != other.token;
}
private:
char* json;
Internal::JsonToken token;
};
}
}

39
JsonParser/JsonPair.h Normal file
View File

@ -0,0 +1,39 @@
/*
* Arduino JSON library
* Benoit Blanchon 2014 - MIT License
*/
#pragma once
#include "JsonValue.h"
namespace ArduinoJson
{
namespace Parser
{
class JsonPair
{
public:
JsonPair(char* json, Internal::JsonToken token)
: json(json), token(token)
{
}
const char* key()
{
return token.getText(json);
}
JsonValue value()
{
return JsonValue(json, token.nextSibling());
}
private:
char* json;
Internal::JsonToken token;
};
}
}