forked from bblanchon/ArduinoJson
Clear the JsonObject or JsonArray in deserializeJson()
This commit is contained in:
@ -89,6 +89,10 @@ class List {
|
||||
}
|
||||
|
||||
protected:
|
||||
void clear() {
|
||||
_firstNode = 0;
|
||||
}
|
||||
|
||||
JsonBuffer *_buffer;
|
||||
|
||||
private:
|
||||
|
@ -16,6 +16,11 @@ class DynamicJsonArray : public JsonArray {
|
||||
DynamicJsonArray(size_t capacity)
|
||||
: JsonArray(&_buffer), _buffer(capacity - sizeof(JsonArray)) {}
|
||||
|
||||
void clear() {
|
||||
Internals::List<JsonVariant>::clear();
|
||||
_buffer.clear();
|
||||
}
|
||||
|
||||
size_t memoryUsage() const {
|
||||
return _buffer.size() + sizeof(JsonArray);
|
||||
}
|
||||
|
@ -20,6 +20,11 @@ class DynamicJsonObject : public JsonObject {
|
||||
return _buffer;
|
||||
}
|
||||
|
||||
void clear() {
|
||||
Internals::List<JsonPair>::clear();
|
||||
_buffer.clear();
|
||||
}
|
||||
|
||||
size_t memoryUsage() const {
|
||||
return _buffer.size() + sizeof(JsonObject);
|
||||
}
|
||||
|
@ -14,6 +14,7 @@ class DynamicJsonVariant : public JsonVariant {
|
||||
|
||||
public:
|
||||
DynamicJsonVariant() : JsonVariant() {}
|
||||
DynamicJsonVariant(size_t capacity) : JsonVariant(), _buffer(capacity) {}
|
||||
|
||||
template <typename T>
|
||||
DynamicJsonVariant& operator=(const T& value) {
|
||||
@ -33,8 +34,12 @@ class DynamicJsonVariant : public JsonVariant {
|
||||
return _buffer;
|
||||
}
|
||||
|
||||
void clear() {
|
||||
_buffer.clear();
|
||||
}
|
||||
|
||||
size_t memoryUsage() const {
|
||||
return _buffer.size() + sizeof(JsonVariant);
|
||||
return _buffer.size();
|
||||
}
|
||||
};
|
||||
} // namespace ArduinoJson
|
||||
|
@ -16,6 +16,11 @@ class StaticJsonArray : public JsonArray {
|
||||
public:
|
||||
StaticJsonArray() : JsonArray(&_buffer) {}
|
||||
|
||||
void clear() {
|
||||
Internals::List<JsonVariant>::clear();
|
||||
_buffer.clear();
|
||||
}
|
||||
|
||||
size_t memoryUsage() const {
|
||||
return _buffer.size() + sizeof(JsonArray);
|
||||
}
|
||||
|
@ -16,6 +16,11 @@ class StaticJsonObject : public JsonObject {
|
||||
public:
|
||||
StaticJsonObject() : JsonObject(&_buffer) {}
|
||||
|
||||
void clear() {
|
||||
Internals::List<JsonPair>::clear();
|
||||
_buffer.clear();
|
||||
}
|
||||
|
||||
size_t memoryUsage() const {
|
||||
return _buffer.size() + sizeof(JsonObject);
|
||||
}
|
||||
|
@ -11,7 +11,7 @@ namespace ArduinoJson {
|
||||
|
||||
template <size_t CAPACITY = sizeof(JsonVariant)>
|
||||
class StaticJsonVariant : public JsonVariant {
|
||||
StaticJsonBuffer<CAPACITY - sizeof(JsonVariant)> _buffer;
|
||||
StaticJsonBuffer<CAPACITY> _buffer;
|
||||
|
||||
public:
|
||||
template <typename T>
|
||||
@ -32,8 +32,12 @@ class StaticJsonVariant : public JsonVariant {
|
||||
return _buffer;
|
||||
}
|
||||
|
||||
void clear() {
|
||||
_buffer.clear();
|
||||
}
|
||||
|
||||
size_t memoryUsage() const {
|
||||
return _buffer.size() + sizeof(JsonVariant);
|
||||
return _buffer.size();
|
||||
}
|
||||
};
|
||||
} // namespace ArduinoJson
|
||||
|
@ -15,6 +15,7 @@ typename Internals::EnableIf<!Internals::IsArray<TString>::value,
|
||||
JsonError>::type
|
||||
deserializeJson(TDestination &destination, const TString &json,
|
||||
uint8_t nestingLimit = ARDUINOJSON_DEFAULT_NESTING_LIMIT) {
|
||||
destination.clear();
|
||||
return Internals::makeParser(&destination.buffer(), json, nestingLimit)
|
||||
.parse(destination);
|
||||
}
|
||||
@ -26,6 +27,7 @@ template <typename TDestination, typename TString>
|
||||
JsonError deserializeJson(
|
||||
TDestination &destination, TString *json,
|
||||
uint8_t nestingLimit = ARDUINOJSON_DEFAULT_NESTING_LIMIT) {
|
||||
destination.clear();
|
||||
return Internals::makeParser(&destination.buffer(), json, nestingLimit)
|
||||
.parse(destination);
|
||||
}
|
||||
@ -37,6 +39,7 @@ template <typename TDestination, typename TString>
|
||||
JsonError deserializeJson(
|
||||
TDestination &destination, TString &json,
|
||||
uint8_t nestingLimit = ARDUINOJSON_DEFAULT_NESTING_LIMIT) {
|
||||
destination.clear();
|
||||
return Internals::makeParser(&destination.buffer(), json, nestingLimit)
|
||||
.parse(destination);
|
||||
}
|
||||
|
Reference in New Issue
Block a user