From 7585c0f671256dc7daf7a407d8a693df20183e98 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Wed, 17 Sep 2025 22:02:45 +0200 Subject: [PATCH] Extract `asString()` Before: 9874, 8736, 9694, 12634, 9970 After: 9802, 8736, 9630, 12588, 9910 Target: 9800, 8458, 9634, 12290, 9702 --- src/ArduinoJson/Object/ObjectImpl.hpp | 3 ++- src/ArduinoJson/Variant/VariantData.hpp | 11 ++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/ArduinoJson/Object/ObjectImpl.hpp b/src/ArduinoJson/Object/ObjectImpl.hpp index a55503a2..1c57513a 100644 --- a/src/ArduinoJson/Object/ObjectImpl.hpp +++ b/src/ArduinoJson/Object/ObjectImpl.hpp @@ -34,7 +34,8 @@ inline ObjectImpl::iterator ObjectImpl::findKey(TAdaptedString key) const { bool isKey = true; for (auto it = createIterator(); !it.done(); it.next(resources_)) { VariantImpl variant(it.data(), resources_); - if (isKey && stringEquals(key, adaptString(variant.asString()))) + if (isKey && stringEquals(key, adaptString(VariantImpl::asString( + it.data(), resources_)))) return it; isKey = !isKey; } diff --git a/src/ArduinoJson/Variant/VariantData.hpp b/src/ArduinoJson/Variant/VariantData.hpp index 11632d16..bc9a8721 100644 --- a/src/ArduinoJson/Variant/VariantData.hpp +++ b/src/ArduinoJson/Variant/VariantData.hpp @@ -316,7 +316,16 @@ class VariantImpl { } JsonString asString() const { - switch (type()) { + if (!data_) + return JsonString(); + return asString(data_, resources_); + } + + static JsonString asString(VariantData* data_, ResourceManager* resources_) { + ARDUINOJSON_ASSERT(data_ != nullptr); + ARDUINOJSON_ASSERT(resources_ != nullptr); + + switch (data_->type) { case VariantType::TinyString: return JsonString(data_->content.asTinyString); case VariantType::LongString: