diff --git a/src/Internals/JsonParser.cpp b/src/Internals/JsonParser.cpp index f9f3d4f7..083f3304 100644 --- a/src/Internals/JsonParser.cpp +++ b/src/Internals/JsonParser.cpp @@ -151,8 +151,13 @@ JsonNode* JsonParser::parseArray() JsonNode* JsonParser::parseObject() { - _ptr+=2; - return _buffer->createObjectNode(); + JsonNode* node = _buffer->createObjectNode(); + + skipOneChar(); // skip the '[' + skipSpaces(); + + if (isObjectStop()) + return node; } JsonNode *JsonParser::parseBoolean() diff --git a/test/JsonParser_Object_Tests.cpp b/test/JsonParser_Object_Tests.cpp index bb553d3a..482995b5 100644 --- a/test/JsonParser_Object_Tests.cpp +++ b/test/JsonParser_Object_Tests.cpp @@ -7,14 +7,43 @@ class JsonParser_Object_Test : public testing::Test { protected: + void whenInputIs(const char* jsonString) + { + strcpy(_jsonString, jsonString); + _object = _jsonBuffer.parseObject(_jsonString); + } + void parseMustSucceed() + { + EXPECT_TRUE(_object.success()); + } + + void parseMustFail() + { + EXPECT_FALSE(_object.success()); + } + + void sizeMustBe(int expected) + { + EXPECT_EQ(expected, _object.size()); + } + +private: + StaticJsonBuffer<10> _jsonBuffer; + JsonObject _object; + char _jsonString[256]; }; TEST_F(JsonParser_Object_Test, EmptyObject) { - StaticJsonBuffer<10> jsonBuffer; - char jsonString[] = "{}"; - JsonObject object = jsonBuffer.parseObject(jsonString); + whenInputIs("{}"); + parseMustSucceed(); + sizeMustBe(0); +} - EXPECT_TRUE(object.success()); +TEST_F(JsonParser_Object_Test, MissingClosingBrace) +{ + whenInputIs("{"); + parseMustFail(); + sizeMustBe(0); } \ No newline at end of file