forked from bblanchon/ArduinoJson
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