From 35a39b8d8fd0856564d8b0f28962c6c752cac7ca Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Tue, 4 Aug 2020 09:52:42 +0200 Subject: [PATCH] Fixed `deserializeJson()` that stopped reading after `{}` (fixes #1335) --- CHANGELOG.md | 5 +++++ extras/tests/JsonDeserializer/object.cpp | 6 ++++++ src/ArduinoJson/Json/JsonDeserializer.hpp | 6 ++---- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 330d8380..2772c645 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ ArduinoJson: change log ======================= +HEAD +---- + +* Fixed `deserializeJson()` that stopped reading after `{}` (issue #1335) + v6.16.0 (2020-08-01) ------- diff --git a/extras/tests/JsonDeserializer/object.cpp b/extras/tests/JsonDeserializer/object.cpp index d6981d41..61d8fc3d 100644 --- a/extras/tests/JsonDeserializer/object.cpp +++ b/extras/tests/JsonDeserializer/object.cpp @@ -290,4 +290,10 @@ TEST_CASE("deserialize JSON object") { REQUIRE(obj.size() == 0); REQUIRE(doc.memoryUsage() == JSON_OBJECT_SIZE(0)); } + + SECTION("Issue #1335") { + std::string json("{\"a\":{},\"b\":{}}"); + deserializeJson(doc, json); + CHECK(doc.as() == json); + } } diff --git a/src/ArduinoJson/Json/JsonDeserializer.hpp b/src/ArduinoJson/Json/JsonDeserializer.hpp index ef5ab06d..16094a08 100644 --- a/src/ArduinoJson/Json/JsonDeserializer.hpp +++ b/src/ArduinoJson/Json/JsonDeserializer.hpp @@ -213,10 +213,8 @@ class JsonDeserializer { return false; // Empty object? - if (eat('}')) { - _error = DeserializationError::Ok; - return false; - } + if (eat('}')) + return true; // Read each key value pair for (;;) {