mirror of
https://github.com/eledio-devices/thirdparty-ArduinoJson.git
synced 2025-11-02 08:48:27 +01:00
Create or assign a JsonDocument from a JsonArray/JsonObject/JsonVariant
This commit is contained in:
@@ -77,6 +77,14 @@ variantAs(const VariantData* _data) {
|
||||
return _data != 0 ? _data->asString() : 0;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
inline typename enable_if<is_same<ArrayConstRef, T>::value, T>::type variantAs(
|
||||
const VariantData* _data);
|
||||
|
||||
template <typename T>
|
||||
inline typename enable_if<is_same<ObjectConstRef, T>::value, T>::type variantAs(
|
||||
const VariantData* _data);
|
||||
|
||||
template <typename T>
|
||||
inline typename enable_if<is_same<VariantConstRef, T>::value, T>::type
|
||||
variantAs(const VariantData* _data);
|
||||
|
||||
@@ -5,10 +5,23 @@
|
||||
#pragma once
|
||||
|
||||
#include "../Serialization/DynamicStringWriter.hpp"
|
||||
#include "VariantFunctions.hpp"
|
||||
#include "VariantRef.hpp"
|
||||
|
||||
namespace ARDUINOJSON_NAMESPACE {
|
||||
|
||||
template <typename T>
|
||||
inline typename enable_if<is_same<ArrayConstRef, T>::value, T>::type variantAs(
|
||||
const VariantData* _data) {
|
||||
return ArrayConstRef(variantAsArray(_data));
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
inline typename enable_if<is_same<ObjectConstRef, T>::value, T>::type variantAs(
|
||||
const VariantData* _data) {
|
||||
return ObjectConstRef(variantAsObject(_data));
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
inline typename enable_if<is_same<VariantConstRef, T>::value, T>::type
|
||||
variantAs(const VariantData* _data) {
|
||||
|
||||
@@ -67,10 +67,7 @@ class VariantData {
|
||||
}
|
||||
|
||||
CollectionData *asArray() {
|
||||
if (type() == VALUE_IS_ARRAY)
|
||||
return &_content.asCollection;
|
||||
else
|
||||
return 0;
|
||||
return type() == VALUE_IS_ARRAY ? &_content.asCollection : 0;
|
||||
}
|
||||
|
||||
const CollectionData *asArray() const {
|
||||
@@ -78,10 +75,7 @@ class VariantData {
|
||||
}
|
||||
|
||||
CollectionData *asObject() {
|
||||
if (type() == VALUE_IS_OBJECT)
|
||||
return &_content.asCollection;
|
||||
else
|
||||
return 0;
|
||||
return type() == VALUE_IS_OBJECT ? &_content.asCollection : 0;
|
||||
}
|
||||
|
||||
const CollectionData *asObject() const {
|
||||
|
||||
@@ -16,6 +16,10 @@ inline void variantAccept(const VariantData *var, Visitor &visitor) {
|
||||
visitor.visitNull();
|
||||
}
|
||||
|
||||
inline const CollectionData *variantAsArray(const VariantData *var) {
|
||||
return var != 0 ? var->asArray() : 0;
|
||||
}
|
||||
|
||||
inline const CollectionData *variantAsObject(const VariantData *var) {
|
||||
return var != 0 ? var->asObject() : 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user