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