forked from bblanchon/ArduinoJson
Parse an array with two longs
This commit is contained in:
@ -42,6 +42,11 @@ bool JsonParser::isSpace()
|
||||
return *_ptr == ' ' || *_ptr == '\t' || *_ptr == '\n' || *_ptr == '\r';
|
||||
}
|
||||
|
||||
bool JsonParser::isComma()
|
||||
{
|
||||
return *_ptr == ',';
|
||||
}
|
||||
|
||||
void JsonParser::skipOneChar()
|
||||
{
|
||||
_ptr++;
|
||||
@ -52,7 +57,7 @@ void JsonParser::skipSpaces()
|
||||
while(isSpace()) skipOneChar();
|
||||
}
|
||||
|
||||
JsonNode* JsonParser::parseNode()
|
||||
JsonNode* JsonParser::parseAnything()
|
||||
{
|
||||
skipSpaces();
|
||||
|
||||
@ -67,19 +72,32 @@ JsonNode* JsonParser::parseNode()
|
||||
|
||||
JsonNode* JsonParser::parseArray()
|
||||
{
|
||||
skipOneChar(); // skip the '['
|
||||
skipSpaces();
|
||||
|
||||
JsonNode* node = _buffer->createNode();
|
||||
node->setAsArray(_buffer);
|
||||
|
||||
skipOneChar(); // skip the '['
|
||||
skipSpaces();
|
||||
|
||||
if (isEnd())
|
||||
return 0;
|
||||
|
||||
if (isArrayStop())
|
||||
return node;
|
||||
|
||||
node->addChild(parseNode());
|
||||
for(;;)
|
||||
{
|
||||
node->addChild(parseAnything());
|
||||
|
||||
skipSpaces();
|
||||
|
||||
if (isArrayStop())
|
||||
return node;
|
||||
|
||||
if (!isComma())
|
||||
return 0;
|
||||
|
||||
skipOneChar(); // skip the ','
|
||||
}
|
||||
|
||||
return node;
|
||||
}
|
||||
|
@ -12,9 +12,8 @@ public:
|
||||
|
||||
}
|
||||
|
||||
JsonNode* parseNode();
|
||||
JsonNode* parseArray();
|
||||
JsonNode* parseLong();
|
||||
JsonNode* parseAnything();
|
||||
|
||||
private:
|
||||
JsonBuffer* _buffer;
|
||||
char* _ptr;
|
||||
@ -24,6 +23,11 @@ private:
|
||||
inline bool isArrayStop();
|
||||
inline bool isLong();
|
||||
inline bool isSpace();
|
||||
inline bool isComma();
|
||||
|
||||
inline void skipOneChar();
|
||||
inline void skipSpaces();
|
||||
|
||||
inline JsonNode* parseArray();
|
||||
inline JsonNode* parseLong();
|
||||
};
|
Reference in New Issue
Block a user