mirror of
https://github.com/eledio-devices/thirdparty-ArduinoJson.git
synced 2025-11-01 00:38:27 +01:00
as<double>, as<string>
This commit is contained in:
@@ -330,5 +330,23 @@ TEST_CASE("JsonVariant::as()") {
|
||||
variant.link(doc2);
|
||||
|
||||
CHECK(variant.as<int>() == 42);
|
||||
CHECK(variant.as<double>() == 42.0);
|
||||
}
|
||||
|
||||
SECTION("linked double") {
|
||||
StaticJsonDocument<128> doc2;
|
||||
doc2.set(42.0);
|
||||
variant.link(doc2);
|
||||
|
||||
CHECK(variant.as<int>() == 42);
|
||||
CHECK(variant.as<double>() == 42.0);
|
||||
}
|
||||
|
||||
SECTION("linked string") {
|
||||
StaticJsonDocument<128> doc2;
|
||||
doc2.set("hello");
|
||||
variant.link(doc2);
|
||||
|
||||
CHECK(variant.as<std::string>() == "hello");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,8 +17,6 @@ namespace ARDUINOJSON_NAMESPACE {
|
||||
|
||||
template <typename T>
|
||||
inline T VariantData::asIntegral() const {
|
||||
if (isPointer())
|
||||
return _content.asPointer->asIntegral<T>();
|
||||
switch (type()) {
|
||||
case VALUE_IS_BOOLEAN:
|
||||
return _content.asBoolean;
|
||||
@@ -31,6 +29,8 @@ inline T VariantData::asIntegral() const {
|
||||
return parseNumber<T>(_content.asString.data);
|
||||
case VALUE_IS_FLOAT:
|
||||
return convertNumber<T>(_content.asFloat);
|
||||
case VALUE_IS_POINTER:
|
||||
return _content.asPointer->asIntegral<T>();
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
@@ -67,6 +67,8 @@ inline T VariantData::asFloat() const {
|
||||
return parseNumber<T>(_content.asString.data);
|
||||
case VALUE_IS_FLOAT:
|
||||
return static_cast<T>(_content.asFloat);
|
||||
case VALUE_IS_POINTER:
|
||||
return _content.asPointer->asFloat<T>();
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
@@ -80,6 +82,8 @@ inline String VariantData::asString() const {
|
||||
case VALUE_IS_OWNED_STRING:
|
||||
return String(_content.asString.data, _content.asString.size,
|
||||
String::Copied);
|
||||
case VALUE_IS_POINTER:
|
||||
return _content.asPointer->asString();
|
||||
default:
|
||||
return String();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user