diff --git a/src/ArduinoJson/Object/JsonObject.hpp b/src/ArduinoJson/Object/JsonObject.hpp index 0e26c8de..eabff8a7 100644 --- a/src/ArduinoJson/Object/JsonObject.hpp +++ b/src/ArduinoJson/Object/JsonObject.hpp @@ -95,7 +95,16 @@ class JsonObject : public detail::VariantOperators { // Copies an object. // https://arduinojson.org/v6/api/jsonobject/set/ FORCE_INLINE bool set(JsonObjectConst src) { - return detail::ObjectData::copy(data_, src.data_, resources_); + if (!data_ || !src.data_) + return false; + + clear(); + for (auto kvp : src) { + if (!operator[](kvp.key()).set(kvp.value())) + return false; + } + + return true; } // Gets or sets the member with specified key. diff --git a/src/ArduinoJson/Object/ObjectData.hpp b/src/ArduinoJson/Object/ObjectData.hpp index 2277f34b..0aed8619 100644 --- a/src/ArduinoJson/Object/ObjectData.hpp +++ b/src/ArduinoJson/Object/ObjectData.hpp @@ -39,16 +39,6 @@ class ObjectData : public CollectionData { } } - bool copyFrom(const ObjectData& src, ResourceManager* resources); - - static bool copy(ObjectData* dst, const ObjectData* src, - ResourceManager* resources) { - if (!dst || !src) - return false; - - return dst->copyFrom(*src, resources); - } - template VariantData* getOrAddMember(TAdaptedString key, ResourceManager* resources); diff --git a/src/ArduinoJson/Object/ObjectImpl.hpp b/src/ArduinoJson/Object/ObjectImpl.hpp index fdb97330..efff78b1 100644 --- a/src/ArduinoJson/Object/ObjectImpl.hpp +++ b/src/ArduinoJson/Object/ObjectImpl.hpp @@ -9,22 +9,6 @@ ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE -inline bool ObjectData::copyFrom(const ObjectData& src, - ResourceManager* resources) { - clear(resources); - - for (auto it = src.createIterator(); !it.done(); it.next()) { - ARDUINOJSON_ASSERT(it.key() != 0); - JsonString key(it.key(), - it.ownsKey() ? JsonString::Copied : JsonString::Linked); - auto var = addMember(adaptString(key), resources); - if (!copyVariant(JsonVariant(var, resources), - JsonVariantConst(it.data(), resources))) - return false; - } - return true; -} - template inline VariantData* ObjectData::getMember(TAdaptedString key) const { return findKey(key).data();