diff --git a/src/ArduinoJson/Variant/ConverterImpl.hpp b/src/ArduinoJson/Variant/ConverterImpl.hpp index 0b83f34f..df09494f 100644 --- a/src/ArduinoJson/Variant/ConverterImpl.hpp +++ b/src/ArduinoJson/Variant/ConverterImpl.hpp @@ -124,7 +124,9 @@ struct Converter { static const char* fromJson(VariantConstRef src) { const VariantData* data = getData(src); - return data ? data->asString().c_str() : 0; + if (!data) + return 0; + return data->resolve()->asString().c_str(); } static bool checkJson(VariantConstRef src) { @@ -142,7 +144,9 @@ struct Converter { static String fromJson(VariantConstRef src) { const VariantData* data = getData(src); - return data ? data->asString() : 0; + if (!data) + return String(); + return data->resolve()->asString(); } static bool checkJson(VariantConstRef src) { diff --git a/src/ArduinoJson/Variant/VariantImpl.hpp b/src/ArduinoJson/Variant/VariantImpl.hpp index 2918a25f..2023c17f 100644 --- a/src/ArduinoJson/Variant/VariantImpl.hpp +++ b/src/ArduinoJson/Variant/VariantImpl.hpp @@ -80,8 +80,6 @@ inline String VariantData::asString() const { case VALUE_IS_OWNED_STRING: return String(_content.asString.data, _content.asString.size, String::Copied); - case VALUE_IS_POINTER: // P+16 G+0 - return _content.asPointer->asString(); default: return String(); }