Change VariantData::asString() return type to JsonString

This commit is contained in:
Benoit Blanchon
2021-10-24 09:55:28 +02:00
parent acfa174333
commit a7873389c6
4 changed files with 12 additions and 8 deletions

View File

@ -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);
}

View File

@ -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;

View File

@ -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;
}