Releases: bblanchon/ArduinoJson
ArduinoJson 7.4.3
ArduinoJson 7.3.2
ArduinoJson 7.2.2
Changes
- Fix support for NUL characters in
deserializeJson() - Fix a buffer overrun in
as<T>()whenTis a numeric type and the variant contains a string representing a floating point number with a large number of digits (issue #2220)
Huge thanks to @xD0135 for reporting this long-standing security issue ❤️❤️❤️
ArduinoJson 6.21.6
Changes
- Improve error messages when using
charorchar*(issue #2043) - Make string support even more generic (PR #2084 by @d-a-v)
- Fix a buffer overrun in
as<T>()whenTis a numeric type and the variant contains a string representing a floating point number with a large number of digits (issue #2220)
Huge thanks to @xD0135 for reporting this long-standing security issue ❤️❤️❤️
ArduinoJson 5.13.6
Changes
JsonObject::createNestedObject()returnsJsonObject::invalid()if key is null (issue #1891)JsonObject::createNestedArray()returnsJsonArray::invalid()if key is null- Fix a buffer overrun in
as<T>()whenTis a numeric type and
the variant contains a string representing a floating point number
with a large number of digits (issue #2220)
Huge thanks to @xD0135 for reporting this long-standing security issue ❤️❤️❤️
ArduinoJson 7.4.2
ArduinoJson 7.4.1
ArduinoJson 7.4.0
Changes
- Optimize storage of tiny strings (up to 3 characters)
- Fix support for
const char[](issue #2166)
ArduinoJson 7.3.1
ArduinoJson 7.3.0
Changes
- Fix support for NUL characters in
deserializeJson() - Make
ElementProxyandMemberProxynon-copyable - Change string copy policy: only string literal are stored by pointer
JsonStringis now stored by copy, unless specified otherwise- Replace undocumented
JsonString::Ownershipwithbool - Rename undocumented
JsonString::isLinked()toisStatic() - Move public facing SFINAEs to template declarations
BREAKING CHANGES
In previous versions,
MemberProxy(the class returned byoperator[]) could lead to dangling pointers when used with a temporary string.
To prevent this issue,MemberProxyandElementProxyare now non-copyable.Your code is likely to be affected if you use
autoto store the result ofoperator[]. For example, the following line won't compile anymore:auto value = doc["key"];To fix the issue, you must append either
.as<T>()or.to<T>(), depending on the situation.For example, if you are extracting values from a JSON document, you should update like this:
- auto config = doc["config"]; + auto config = doc["config"].as<JsonObject>(); const char* name = config["name"];However, if you are building a JSON document, you should update like this:
- auto config = doc["config"]; + auto config = doc["config"].to<JsonObject>(); config["name"] = "ArduinoJson";