diff --git a/src/ArduinoJson/Deserialization/deserialize.hpp b/src/ArduinoJson/Deserialization/deserialize.hpp index 4c3b2298..5da5df87 100644 --- a/src/ArduinoJson/Deserialization/deserialize.hpp +++ b/src/ArduinoJson/Deserialization/deserialize.hpp @@ -50,7 +50,7 @@ DeserializationError doDeserialize(TDestination&& dst, TReader reader, auto resources = VariantAttorney::getResourceManager(dst); dst.clear(); auto err = TDeserializer(resources, reader) - .parse(*data, options.filter, options.nestingLimit); + .parse(data, options.filter, options.nestingLimit); shrinkJsonDocument(dst); return err; } diff --git a/src/ArduinoJson/Json/JsonDeserializer.hpp b/src/ArduinoJson/Json/JsonDeserializer.hpp index b70bf4ce..91449229 100644 --- a/src/ArduinoJson/Json/JsonDeserializer.hpp +++ b/src/ArduinoJson/Json/JsonDeserializer.hpp @@ -28,13 +28,13 @@ class JsonDeserializer { resources_(resources) {} template - DeserializationError parse(VariantData& variant, TFilter filter, + DeserializationError parse(VariantData* variant, TFilter filter, DeserializationOption::NestingLimit nestingLimit) { DeserializationError::Code err; err = parseVariant(variant, filter, nestingLimit); - if (!err && latch_.last() != 0 && variant.isFloat()) { + if (!err && latch_.last() != 0 && variant->isFloat()) { // We don't detect trailing characters earlier, so we need to check now return DeserializationError::InvalidInput; } @@ -60,7 +60,7 @@ class JsonDeserializer { template DeserializationError::Code parseVariant( - VariantData& variant, TFilter filter, + VariantData* variant, TFilter filter, DeserializationOption::NestingLimit nestingLimit) { DeserializationError::Code err; @@ -71,13 +71,13 @@ class JsonDeserializer { switch (current()) { case '[': if (filter.allowArray()) - return parseArray(variant.toArray(resources_), filter, nestingLimit); + return parseArray(variant->toArray(resources_), filter, nestingLimit); else return skipArray(nestingLimit); case '{': if (filter.allowObject()) - return parseObject(variant.toObject(resources_), filter, + return parseObject(variant->toObject(resources_), filter, nestingLimit); else return skipObject(nestingLimit); @@ -91,12 +91,12 @@ class JsonDeserializer { case 't': if (filter.allowValue()) - variant.setBoolean(true); + variant->setBoolean(true); return skipKeyword("true"); case 'f': if (filter.allowValue()) - variant.setBoolean(false); + variant->setBoolean(false); return skipKeyword("false"); case 'n': @@ -178,7 +178,7 @@ class JsonDeserializer { return DeserializationError::NoMemory; // 1 - Parse value - err = parseVariant(*value, elementFilter, nestingLimit.decrement()); + err = parseVariant(value, elementFilter, nestingLimit.decrement()); if (err) return err; } else { @@ -286,7 +286,7 @@ class JsonDeserializer { } // Parse value - err = parseVariant(*member, memberFilter, nestingLimit.decrement()); + err = parseVariant(member, memberFilter, nestingLimit.decrement()); if (err) return err; } else { @@ -380,7 +380,7 @@ class JsonDeserializer { } } - DeserializationError::Code parseStringValue(VariantData& variant) { + DeserializationError::Code parseStringValue(VariantData* variant) { DeserializationError::Code err; stringBuilder_.startString(); @@ -389,7 +389,7 @@ class JsonDeserializer { if (err) return err; - stringBuilder_.save(&variant); + stringBuilder_.save(variant); return DeserializationError::Ok; } @@ -505,7 +505,7 @@ class JsonDeserializer { return DeserializationError::Ok; } - DeserializationError::Code parseNumericValue(VariantData& result) { + DeserializationError::Code parseNumericValue(VariantData* result) { uint8_t n = 0; char c = current(); @@ -519,26 +519,26 @@ class JsonDeserializer { auto number = parseNumber(buffer_); switch (number.type()) { case NumberType::UnsignedInteger: - if (result.setInteger(number.asUnsignedInteger(), resources_)) + if (result->setInteger(number.asUnsignedInteger(), resources_)) return DeserializationError::Ok; else return DeserializationError::NoMemory; case NumberType::SignedInteger: - if (result.setInteger(number.asSignedInteger(), resources_)) + if (result->setInteger(number.asSignedInteger(), resources_)) return DeserializationError::Ok; else return DeserializationError::NoMemory; case NumberType::Float: - if (result.setFloat(number.asFloat(), resources_)) + if (result->setFloat(number.asFloat(), resources_)) return DeserializationError::Ok; else return DeserializationError::NoMemory; #if ARDUINOJSON_USE_DOUBLE case NumberType::Double: - if (result.setFloat(number.asDouble(), resources_)) + if (result->setFloat(number.asDouble(), resources_)) return DeserializationError::Ok; else return DeserializationError::NoMemory; diff --git a/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp b/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp index ac1e4056..42ec422e 100644 --- a/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp +++ b/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp @@ -24,10 +24,10 @@ class MsgPackDeserializer { foundSomething_(false) {} template - DeserializationError parse(VariantData& variant, TFilter filter, + DeserializationError parse(VariantData* variant, TFilter filter, DeserializationOption::NestingLimit nestingLimit) { DeserializationError::Code err; - err = parseVariant(&variant, filter, nestingLimit); + err = parseVariant(variant, filter, nestingLimit); return foundSomething_ ? err : DeserializationError::EmptyInput; }