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