diff --git a/include/ArduinoJson/JsonValue.hpp b/include/ArduinoJson/JsonValue.hpp index 9645b92d..7ba05c0f 100644 --- a/include/ArduinoJson/JsonValue.hpp +++ b/include/ArduinoJson/JsonValue.hpp @@ -25,7 +25,7 @@ namespace ArduinoJson void operator=(int); void operator=(const JsonValue& value) { duplicate(value); } void operator=(const Internals::JsonNodeWrapper& object) { duplicate(object); } - + operator bool() const; operator const char*() const; operator double() const; @@ -35,5 +35,11 @@ namespace ArduinoJson operator JsonObject() const; void set(double value, int decimals); + + template + T as() + { + return static_cast(*this); + } }; } \ No newline at end of file diff --git a/test/JsonArray_Container_Tests.cpp b/test/JsonArray_Container_Tests.cpp index 323b2434..bd31a7e7 100644 --- a/test/JsonArray_Container_Tests.cpp +++ b/test/JsonArray_Container_Tests.cpp @@ -41,7 +41,7 @@ private: template void elementAtIndexMustBe(int index, T expected) { - EXPECT_EQ(expected, static_cast(array[index])); + EXPECT_EQ(expected, array[index].as()); } }; diff --git a/test/JsonArray_Iterator_Tests.cpp b/test/JsonArray_Iterator_Tests.cpp index 79e23cb3..9d6130be 100644 --- a/test/JsonArray_Iterator_Tests.cpp +++ b/test/JsonArray_Iterator_Tests.cpp @@ -16,10 +16,10 @@ TEST(JsonArray_Iterator_Test, SimpleTest) JsonArrayIterator end = array.end(); EXPECT_NE(end, it); - EXPECT_EQ(12, static_cast(*it)); + EXPECT_EQ(12, (*it).as()); // TODO: use -> ++it; EXPECT_NE(end, it); - EXPECT_EQ(34, static_cast(*it)); + EXPECT_EQ(34, (*it).as()); // TODO: use -> ++it; EXPECT_EQ(array.end(), it); } \ No newline at end of file diff --git a/test/JsonObject_Iterator_Tests.cpp b/test/JsonObject_Iterator_Tests.cpp index da0b24d7..3973c5f9 100644 --- a/test/JsonObject_Iterator_Tests.cpp +++ b/test/JsonObject_Iterator_Tests.cpp @@ -17,11 +17,11 @@ TEST(JsonObject_Iterator_Test, SimpleTest) EXPECT_NE(end, it); EXPECT_STREQ("ab", it.key()); - EXPECT_EQ(12, static_cast(it.value())); + EXPECT_EQ(12, it.value().as()); // TODO: use -> ++it; EXPECT_NE(end, it); EXPECT_STREQ("cd", it.key()); - EXPECT_EQ(34, static_cast(it.value())); + EXPECT_EQ(34, it.value().as()); // TODO: use -> ++it; EXPECT_EQ(object.end(), it); } \ No newline at end of file diff --git a/test/JsonParser_Array_Tests.cpp b/test/JsonParser_Array_Tests.cpp index b7e0da15..bd581281 100644 --- a/test/JsonParser_Array_Tests.cpp +++ b/test/JsonParser_Array_Tests.cpp @@ -44,12 +44,12 @@ protected: template void elementAtIndexMustBe(int index, T expected) { - EXPECT_EQ(expected, static_cast(_array[index])); + EXPECT_EQ(expected, _array[index].as()); } void elementAtIndexMustBe(int index, const char* expected) { - EXPECT_STREQ(expected, static_cast(_array[index])); + EXPECT_STREQ(expected, _array[index].as()); } StaticJsonBuffer<42> _jsonBuffer; diff --git a/test/JsonParser_Nested_Tests.cpp b/test/JsonParser_Nested_Tests.cpp index 07add6fc..80364513 100644 --- a/test/JsonParser_Nested_Tests.cpp +++ b/test/JsonParser_Nested_Tests.cpp @@ -20,11 +20,11 @@ TEST(JsonParser_Nested_Tests, ArrayNestedInObject) ASSERT_EQ(2, array1.size()); ASSERT_EQ(2, array2.size()); - EXPECT_EQ(1, static_cast(array1[0])); - EXPECT_EQ(2, static_cast(array1[1])); + EXPECT_EQ(1, array1[0].as()); + EXPECT_EQ(2, array1[1].as()); - EXPECT_EQ(3, static_cast(array2[0])); - EXPECT_EQ(4, static_cast(array2[1])); + EXPECT_EQ(3, array2[0].as()); + EXPECT_EQ(4, array2[1].as()); } TEST(JsonParser_Nested_Tests, ObjectNestedInArray) @@ -44,8 +44,8 @@ TEST(JsonParser_Nested_Tests, ObjectNestedInArray) ASSERT_EQ(2, object1.size()); ASSERT_EQ(2, object2.size()); - EXPECT_EQ(1, static_cast(object1["a"])); - EXPECT_EQ(2, static_cast(object1["b"])); - EXPECT_EQ(3, static_cast(object2["c"])); - EXPECT_EQ(4, static_cast(object2["d"])); + EXPECT_EQ(1, object1["a"].as()); + EXPECT_EQ(2, object1["b"].as()); + EXPECT_EQ(3, object2["c"].as()); + EXPECT_EQ(4, object2["d"].as()); } \ No newline at end of file diff --git a/test/JsonParser_Object_Tests.cpp b/test/JsonParser_Object_Tests.cpp index 70f60fea..c91439ad 100644 --- a/test/JsonParser_Object_Tests.cpp +++ b/test/JsonParser_Object_Tests.cpp @@ -31,13 +31,13 @@ protected: void keyMustHaveValue(const char* key, const char* expected) { - EXPECT_STREQ(expected, static_cast(_object[key])); + EXPECT_STREQ(expected, _object[key].as()); } template void keyMustHaveValue(const char* key, T expected) { - EXPECT_EQ(expected, static_cast(_object[key])); + EXPECT_EQ(expected, _object[key].as()); } private: