Parse empty object

This commit is contained in:
Benoit Blanchon
2014-10-21 21:11:30 +02:00
parent 0daf82eee2
commit 9c1b6b80aa
8 changed files with 64 additions and 7 deletions

View File

@ -165,4 +165,5 @@ void JsonNode::duplicate(JsonNode* other)
{
*this = *other;
}
}
}

View File

@ -18,6 +18,16 @@ bool JsonParser::isArrayStop()
return *_ptr == ']';
}
bool JsonParser::isObjectStart()
{
return *_ptr == '{';
}
bool JsonParser::isObjectStop()
{
return *_ptr == '}';
}
bool JsonParser::isBoolean()
{
return *_ptr == 't' || *_ptr == 'f';
@ -104,13 +114,15 @@ JsonNode* JsonParser::parseAnything()
if (isNull())
return parseNull();
if (isObjectStart())
return parseObject();
return parseString();
}
JsonNode* JsonParser::parseArray()
{
JsonNode* node = _buffer->createNode();
node->setAsArray(_buffer);
JsonNode* node = _buffer->createArrayNode();
skipOneChar(); // skip the '['
skipSpaces();
@ -137,6 +149,12 @@ JsonNode* JsonParser::parseArray()
}
}
JsonNode* JsonParser::parseObject()
{
_ptr+=2;
return _buffer->createObjectNode();
}
JsonNode *JsonParser::parseBoolean()
{
bool value = *_ptr == 't';
@ -168,8 +186,7 @@ JsonNode* JsonParser::parseLong()
JsonNode* JsonParser::parseNull()
{
_ptr += 4;
// 4 = strlen("null")
_ptr += 4; // strlen("null")
return _buffer->createStringNode(0);
}

View File

@ -28,6 +28,12 @@ JsonArray JsonBuffer::parseArray(char* json)
return JsonArray(parser.parseAnything());
}
JsonObject JsonBuffer::parseObject(char* json)
{
JsonParser parser(this, json);
return JsonObject(parser.parseAnything());
}
JsonValue JsonBuffer::parseValue(char* json)
{
JsonParser parser(this, json);