Ver Fonte

Fixed `deserializeJson()` that stopped reading after `{}` (fixes #1335)

Benoit Blanchon há 5 anos atrás
pai
commit
35a39b8d8f

+ 5 - 0
CHANGELOG.md

@@ -1,6 +1,11 @@
 ArduinoJson: change log
 =======================
 
+HEAD
+----
+
+* Fixed `deserializeJson()` that stopped reading after `{}` (issue #1335)
+
 v6.16.0 (2020-08-01)
 -------
 

+ 6 - 0
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<std::string>() == json);
+  }
 }

+ 2 - 4
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 (;;) {