mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 00:32:37 +01:00 
			
		
		
		
	Change VariantData::asString() return type to JsonString
				
					
				
			This commit is contained in:
		| @@ -136,6 +136,7 @@ TEST_CASE("JsonVariant::as()") { | ||||
|  | ||||
|     REQUIRE(variant.as<long>() == 42L); | ||||
|     REQUIRE(variant.as<JsonString>() == "42"); | ||||
|     REQUIRE(variant.as<JsonString>().isStatic() == true); | ||||
|   } | ||||
|  | ||||
|   SECTION("set(\"hello\")") { | ||||
| @@ -158,6 +159,7 @@ TEST_CASE("JsonVariant::as()") { | ||||
|     REQUIRE(variant.as<const char*>() == std::string("4.2")); | ||||
|     REQUIRE(variant.as<std::string>() == std::string("4.2")); | ||||
|     REQUIRE(variant.as<JsonString>() == "4.2"); | ||||
|     REQUIRE(variant.as<JsonString>().isStatic() == false); | ||||
|   } | ||||
|  | ||||
|   SECTION("set(\"true\")") { | ||||
|   | ||||
| @@ -120,7 +120,7 @@ struct Converter<const char*> { | ||||
|  | ||||
|   static const char* fromJson(VariantConstRef src) { | ||||
|     const VariantData* data = getData(src); | ||||
|     return data ? data->asString() : 0; | ||||
|     return data ? data->asString().c_str() : 0; | ||||
|   } | ||||
|  | ||||
|   static bool checkJson(VariantConstRef src) { | ||||
| @@ -137,7 +137,7 @@ struct Converter<String> { | ||||
|  | ||||
|   static String fromJson(VariantConstRef src) { | ||||
|     const VariantData* data = getData(src); | ||||
|     return data ? String(data->asString(), false) : 0; | ||||
|     return data ? data->asString() : 0; | ||||
|   } | ||||
|  | ||||
|   static bool checkJson(VariantConstRef src) { | ||||
| @@ -158,9 +158,9 @@ template <typename T> | ||||
| inline typename enable_if<IsWriteableString<T>::value>::type convertFromJson( | ||||
|     VariantConstRef src, T& dst) { | ||||
|   const VariantData* data = getData(src); | ||||
|   const char* cstr = data != 0 ? data->asString() : 0; | ||||
|   if (cstr) | ||||
|     dst = cstr; | ||||
|   String str = data != 0 ? data->asString() : 0; | ||||
|   if (str) | ||||
|     dst = str.c_str(); | ||||
|   else | ||||
|     serializeJson(src, dst); | ||||
| } | ||||
|   | ||||
| @@ -7,6 +7,7 @@ | ||||
| #include <ArduinoJson/Memory/MemoryPool.hpp> | ||||
| #include <ArduinoJson/Misc/SerializedValue.hpp> | ||||
| #include <ArduinoJson/Numbers/convertNumber.hpp> | ||||
| #include <ArduinoJson/Strings/String.hpp> | ||||
| #include <ArduinoJson/Strings/StringAdapters.hpp> | ||||
| #include <ArduinoJson/Variant/VariantContent.hpp> | ||||
|  | ||||
| @@ -76,7 +77,7 @@ class VariantData { | ||||
|   template <typename T> | ||||
|   T asFloat() const; | ||||
|  | ||||
|   const char *asString() const; | ||||
|   String asString() const; | ||||
|  | ||||
|   bool asBoolean() const; | ||||
|  | ||||
|   | ||||
| @@ -70,11 +70,12 @@ inline T VariantData::asFloat() const { | ||||
|   } | ||||
| } | ||||
|  | ||||
| inline const char *VariantData::asString() const { | ||||
| inline String VariantData::asString() const { | ||||
|   switch (type()) { | ||||
|     case VALUE_IS_LINKED_STRING: | ||||
|       return String(_content.asString, true); | ||||
|     case VALUE_IS_OWNED_STRING: | ||||
|       return _content.asString; | ||||
|       return String(_content.asString, false); | ||||
|     default: | ||||
|       return 0; | ||||
|   } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user