All Versions
92
Latest Version
Avg Release Cycle
41 days
Latest Release
184 days ago

Changelog History
Page 2

  • v6.18.0 Changes

    May 05, 2021
    • โž• Added support for custom converters (issue #687)
    • โž• Added support for Printable (issue #1444)
    • โœ‚ Removed support for char values, see below (issue #1498)
    • ๐Ÿ‘ deserializeJson() leaves \uXXXX unchanged instead of returning NotSupported
    • ๐Ÿ‘ deserializeMsgPack() inserts null instead of returning NotSupported
    • โœ‚ Removed DeserializationError::NotSupported
    • โž• Added JsonVariant::is<JsonArrayConst/JsonObjectConst>() (issue #1412)
    • โž• Added JsonVariant::is<JsonVariant/JsonVariantConst>() (issue #1412)
    • ๐Ÿ”„ Changed JsonVariantConst::is<JsonArray/JsonObject>() to return false (issue #1412)
    • ๐Ÿ‘€ Simplified JsonVariant::as<T>() to always return T (see below)
    • โšก๏ธ Updated folders list in .mbedignore (PR #1515 by @AGlass0fMilk)
    • ๐Ÿ›  Fixed member-call-on-null-pointer in getMember() when array is empty
    • serializeMsgPack(doc, buffer, size) doesn't add null-terminator anymore (issue #1545)
    • serializeJson(doc, buffer, size) adds null-terminator only if there is enough room
    • ๐Ÿ— PlatformIO: set build.libArchive to false (PR #1550 by @askreet)

    BREAKING CHANGES

    ๐Ÿšš > #### Support for char removed

    We cannot cast a JsonVariant to a char anymore, so the following will break:

    char age = doc["age"];  //  error: no matching function for call to 'variantAs(VariantData*&)'
    

    Instead, you must use another integral type, such as int8_t:

    int8_t age = doc["age"];  // OK
    

    Similarly, we cannot assign from a char anymore, so the following will break:

    char age;
    doc["age"] = age;  // error: no matching function for call to 'VariantRef::set(const char&)'
    

    Instead, you must use another integral type, such as int8_t:

    int8_t age;
    doc["age"] = age;  // OK
    

    A deprecation warning with the message "Support for char is deprecated, use int8_t or uint8_t instead" was added to allow a smooth transition.

    as<T>() always returns T

    Previously, JsonVariant::as<T>() could return a type different from T. The most common example is as<char*>() that returned a const char*. While this feature simplified a few use cases, it was confusing and complicated the implementation of custom converters.

    Starting from this version, as<T> doesn't try to auto-correct the return type and always return T, which means that you cannot write this anymore:

    Serial.println(doc["sensor"].as<char*>());  // error: invalid conversion from 'const char*' to 'char*' [-fpermissive]
    

    Instead, you must write:

    ๐Ÿ–จ > Serial.println(doc["sensor"].as<const char*>());  // OK
    

    A deprecation warning with the message "Replace as<char*>() with as<const char*>()" was added to allow a smooth transition.

    ๐Ÿšš > #### DeserializationError::NotSupported removed

    ๐Ÿšš > On a different topic, DeserializationError::NotSupported has been removed. Instead of returning this error:

    • deserializeJson() leaves \uXXXX unchanged (only when ARDUINOJSON_DECODE_UNICODE is 0) ๐Ÿ‘ > * deserializeMsgPack() replaces unsupported values with nulls

    Const-aware is<T>()

    Lastly, a very minor change concerns JsonVariantConst::is<T>(). It used to return true for JsonArray and JsonOject, but now it returns false. Instead, you must use JsonArrayConst and JsonObjectConst.

  • v6.17.3 Changes

    February 15, 2021
    • Made JsonDocument's destructor protected (issue #1480)
    • โž• Added missing calls to client.stop() in JsonHttpClient.ino (issue #1485)
    • ๐Ÿ›  Fixed error expected ')' before 'char' when isdigit() is a macro (issue #1487)
    • ๐Ÿ›  Fixed error definition of implicit copy constructor is deprecated on Clang 10
    • PlatformIO: set framework compatibility to * (PR #1490 by @maxgerhardt)
  • v6.17.2 Changes

    November 14, 2020

    ๐Ÿฑ ๐Ÿ“ฐ Read the complete article on arduinojson.org

    ๐Ÿš€ Changes since 6.17.1

    • ๐Ÿ›  Fixed invalid conversion error in operator|(JsonVariant, char*) (issue #1432)
    • Changed the default value of ARDUINOJSON_ENABLE_PROGMEM (issue #1433).
      It now checks that the pgm_read_XXX macros are defined before enabling PROGMEM.

    View version history

    How to install

    There are several ways to install ArduinoJson, from simpler to more complex:

    1. Use the Arduino Library Manager or equivalent
    2. Download ArduinoJson-v6.17.2.h put it in your project folder
    3. Download ArduinoJson-v6.17.2.zip and extract it into you libraries folder

    Note: ArduinoJson-v6.17.2.h and ArduinoJson-v6.17.2.hpp are almost identical; the difference is that the .hpp keeps everything in the ArduinoJson namespace.

    Try online

  • v6.17.1 Changes

    November 07, 2020

    ๐Ÿฑ ๐Ÿ“ฐ Read the complete article on arduinojson.org

    ๐Ÿš€ Changes since 6.17.0

    • ๐Ÿ›  Fixed error ambiguous overload for 'operator|' (issue #1411)
    • ๐Ÿ›  Fixed operator|(MemberProxy, JsonObject) (issue #1415)
    • ๐Ÿ‘ Allowed more than 32767 values in non-embedded mode (issue #1414)

    View version history

    How to install

    There are several ways to install ArduinoJson, from simpler to more complex:

    1. Use the Arduino Library Manager or equivalent
    2. Download ArduinoJson-v6.17.1.h put it in your project folder
    3. Download ArduinoJson-v6.17.1.zip and extract it into you libraries folder

    Note: ArduinoJson-v6.17.1.h and ArduinoJson-v6.17.1.hpp are almost identical; the difference is that the .hpp keeps everything in the ArduinoJson namespace.

    Try online

  • v6.17.0 Changes

    October 19, 2020

    ๐Ÿฑ ๐Ÿ“ฐ Read the complete article on arduinojson.org

    ๐Ÿš€ Changes since 6.16.1

    • โž• Added a build failure when nullptr is defined as a macro (issue #1355)
    • โž• Added JsonDocument::overflowed() which tells if the memory pool was too small (issue #1358)
    • โž• Added DeserializationError::EmptyInput which tells if the input was empty
    • Added DeserializationError::f_str() which returns a const __FlashStringHelper* (issue #846)
    • โž• Added operator|(JsonVariantConst, JsonVariantConst)
    • โž• Added filtering for MessagePack (issue #1298, PR #1394 by Luca Passarella)
    • ๐Ÿšš Moved float convertion tables to PROGMEM
    • ๐Ÿ›  Fixed JsonVariant::set((char*)0) which returned false instead of true (issue #1368)
    • ๐Ÿ›  Fixed error No such file or directory #include <WString.h> (issue #1381)

    View version history

    How to install

    There are several ways to install ArduinoJson, from simpler to more complex:

    1. Use the Arduino Library Manager or equivalent
    2. Download ArduinoJson-v6.17.0.h put it in your project folder
    3. Download ArduinoJson-v6.17.0.zip and extract it in you libraries folder

    Note: ArduinoJson-v6.17.0.h and ArduinoJson-v6.17.0.hpp are almost identical; the difference is that the .hpp keeps everything in the ArduinoJson namespace.

    Try online

  • v6.16.1 Changes

    August 04, 2020

    ๐Ÿฑ ๐Ÿ“ฐ Read the complete article on arduinojson.org

    ๐Ÿš€ Changes since 6.16.0

    • ๐Ÿ›  Fixed deserializeJson() that stopped reading after {} (issue #1335)

    View version history

    How to install

    There are several ways to install ArduinoJson, from simpler to more complex:

    1. Use the Arduino Library Manager or equivalent
    2. Download ArduinoJson-v6.16.1.h put it in your project folder
    3. Download ArduinoJson-v6.16.1.zip and extract it in you libraries folder

    Note: ArduinoJson-v6.16.1.h and ArduinoJson-v6.16.1.hpp are almost identical; the difference is that the .hpp keeps everything in the ArduinoJson namespace.

    Try online

  • v6.16.0 Changes

    August 01, 2020

    ๐Ÿฑ ๐Ÿ“ฐ Read the complete article on arduinojson.org

    ๐Ÿš€ Changes since 6.15.2

    • โž• Added comparisons (>, >=, ==, !=, <, and <=) between JsonVariants
    • โž• Added string deduplication (issue #1303)
    • โž• Added JsonString::operator!=
    • Set ARDUINOJSON_DECODE_UNICODE to 1 by default
    • ๐Ÿ›  Fixed copyArray() not working with String, ElementProxy, and MemberProxy
    • ๐Ÿ›  Fixed error getOrAddElement is not a member of ElementProxy (issue #1311)
    • ๐Ÿ›  Fixed excessive stack usage when compiled with -Og (issues #1210 and #1314)
    • ๐Ÿ›  Fixed Warning[Pa093]: implicit conversion from floating point to integer on IAR compiler (PR #1328 by @stawiski)

    View version history

    How to install

    There are several ways to install ArduinoJson, from simpler to more complex:

    1. Use the Arduino Library Manager or equivalent
    2. Download ArduinoJson-v6.16.0.h put it in your project folder
    3. Download ArduinoJson-v6.16.0.zip and extract it in you libraries folder

    Note: ArduinoJson-v6.16.0.h and ArduinoJson-v6.16.0.hpp are almost identical; the difference is that the .hpp keeps everything in the ArduinoJson namespace.

    Try online

  • v6.15.2 Changes

    May 15, 2020

    ๐Ÿš€ Changes since 6.15.1

    • ๐Ÿ— CMake: don't build tests when imported in another project
    • CMake: made project arch-independent
    • ๐Ÿ›  Visual Studio: fixed error C2766 with flag /Zc:__cplusplus (issue #1250)
    • โž• Added support for JsonDocument to copyArray() (issue #1255)
    • โž• Added support for enums in as<T>() and is<T>() (issue #1256)
    • โž• Added JsonVariant as an input type for deserializeXxx()
      ๐Ÿ›ฐ For example, you can do: deserializeJson(doc2, doc1["payload"])
    • ๐Ÿ‘‰ Break the build if using 64-bit integers with ARDUINOJSON_USE_LONG_LONG==0

    View version history

    How to install

    There are several ways to install ArduinoJson, from simpler to more complex:

    1. Use the Arduino Library Manager or equivalent
    2. Download ArduinoJson-v6.15.2.h put it in your project folder
    3. Download ArduinoJson-v6.15.2.zip and extract it in you libraries folder

    Note: ArduinoJson-v6.15.2.h and ArduinoJson-v6.15.2.hpp are almost identical; the difference is that the .hpp keeps everything in the ArduinoJson namespace.

    Try online

  • v6.15.1 Changes

    April 08, 2020

    ๐Ÿš€ Changes since 6.15.0

    • ๐Ÿ›  Fixed "maybe-uninitialized" warning (issue #1217)
    • ๐Ÿ›  Fixed "statement is unreachable" warning on IAR (issue #1233)
    • ๐Ÿ›  Fixed "pointless integer comparison" warning on IAR (issue #1233)
    • โž• Added CMake "install" target (issue #1209)
    • Disabled alignment on AVR (issue #1231)

    View version history

    How to install

    There are several ways to install ArduinoJson, from simpler to more complex:

    1. Use the Arduino Library Manager
    2. Download ArduinoJson-v6.15.1.h put it in your project folder
    3. Download ArduinoJson-v6.15.1.zip and extract it in you libraries folder

    Note: ArduinoJson-v6.15.1.h and ArduinoJson-v6.15.1.hpp are almost identical; the difference is that the .hpp keeps everything in the ArduinoJson namespace.

    Try online

  • v6.15.0 Changes

    March 22, 2020

    ๐Ÿฑ ๐Ÿ“ฐ Read the complete article on arduinojson.org

    ๐Ÿš€ Changes since 6.14.1

    • โž• Added DeserializationOption::Filter (issue #959)
    • โž• Added example JsonFilterExample.ino
    • ๐Ÿ”„ Changed the array subscript operator to automatically add missing elements
    • ๐Ÿ›  Fixed "deprecated-copy" warning on GCC 9 (fixes #1184)
    • ๐Ÿ›  Fixed MemberProxy::set(char[]) not duplicating the string (issue #1191)
    • ๐Ÿ›  Fixed enums serialized as booleans (issue #1197)
    • ๐Ÿ›  Fixed incorrect string comparison on some platforms (issue #1198)
    • โž• Added move-constructor and move-assignment to BasicJsonDocument
    • โž• Added BasicJsonDocument::garbageCollect() (issue #1195)
    • โž• Added StaticJsonDocument::garbageCollect()
    • ๐Ÿ”„ Changed copy-constructor of BasicJsonDocument to preserve the capacity of the source.
    • โœ‚ Removed copy-constructor of JsonDocument (issue #1189)

    View version history

    ๐Ÿ’ฅ BREAKING CHANGES โš ๏ธ

    Copy-constructor of BasicJsonDocument

    In previous versions, the copy constructor of BasicJsonDocument looked at the source's memoryUsage() to choose its capacity.
    Now, the copy constructor of BasicJsonDocument uses the same capacity as the source.
    Example:

    DynamicJsonDocument doc1(64); doc1.set(String("example")); DynamicJsonDocument doc2 = doc1; Serial.print(doc2.capacity()); // 8 with ArduinoJson 6.14// 64 with ArduinoJson 6.15
    

    ๐Ÿšš I made this change to get consistent results between copy-constructor and move-constructor, and whether RVO applies or not.
    โšก๏ธ If you use the copy-constructor to optimize your documents, you can use garbageCollect() or shrinkToFit() instead.

    Copy-constructor of JsonDocument

    In previous versions, it was possible to create a function that take a JsonDocument by value.

    void myFunction(JsonDocument doc) {}
    

    This function gives the wrong clues because it doesn't receive a copy of the JsonDocument, only a sliced version.
    It worked because the copy constructor copied the internal pointers, but it was an accident.
    From now, if you need to pass a JsonDocument to a function, you must use a reference:

    void myFunction(JsonDocument& doc) {}
    

    How to install

    There are several ways to install ArduinoJson, from simpler to more complex:

    1. Use the Arduino Library Manager
    2. Download ArduinoJson-v6.15.0.h put it in your project folder
    3. Download ArduinoJson-v6.15.0.zip and extract it in you libraries folder

    Note: ArduinoJson-v6.15.0.h and ArduinoJson-v6.15.0.hpp are almost identical; the difference is that the .hpp keeps everything in the ArduinoJson namespace.

    Try online