diff --git a/src/ArduinoJson/Variant/ConverterImpl.hpp b/src/ArduinoJson/Variant/ConverterImpl.hpp index e8a5d42e..0b83f34f 100644 --- a/src/ArduinoJson/Variant/ConverterImpl.hpp +++ b/src/ArduinoJson/Variant/ConverterImpl.hpp @@ -48,7 +48,9 @@ struct Converter< static T fromJson(VariantConstRef src) { ARDUINOJSON_ASSERT_INTEGER_TYPE_IS_SUPPORTED(T); const VariantData* data = getData(src); - return data ? data->asIntegral() : T(); + if (!data) + return T(); + return data->resolve()->asIntegral(); } static bool checkJson(VariantConstRef src) { @@ -64,8 +66,7 @@ struct Converter::value>::type> { } static T fromJson(VariantConstRef src) { - const VariantData* data = getData(src); - return data ? static_cast(data->asIntegral()) : T(); + return static_cast(Converter::fromJson(src)); } static bool checkJson(VariantConstRef src) { diff --git a/src/ArduinoJson/Variant/VariantImpl.hpp b/src/ArduinoJson/Variant/VariantImpl.hpp index f0489b27..2918a25f 100644 --- a/src/ArduinoJson/Variant/VariantImpl.hpp +++ b/src/ArduinoJson/Variant/VariantImpl.hpp @@ -29,8 +29,6 @@ inline T VariantData::asIntegral() const { return parseNumber(_content.asString.data); case VALUE_IS_FLOAT: return convertNumber(_content.asFloat); - case VALUE_IS_POINTER: // P+28 G+0 - return _content.asPointer->asIntegral(); default: return 0; }