CAUTION: SLIPPERY FLOORThe Arduino Library Manager installs the ArduinoJson version 6 by default.
However, using version 5 is highly recommended because version 6 is still in beta stage.
Open the Arduino Library Manager and make sure that ArduinoJson version 5 is installed.
This is very unlikely. You’re probably using the library incorrectly.
The typical problem comes from reusing a
JsonBuffer several time.
Each time you call
createObject(), you consume memory in the
To avoid running out of memory, you should discard unused data as soon as possible.
The recommended practice is to do the JSON handling in a dedicated function, with a local
JsonBuffer that will be automatically reclaimed when the function exits.
This means that you cannot return a
JsonArray or a
JsonObject from that function, because they would contain dangling pointers to what used to be the
Instead, you should convert the content of the
JsonArray to a custom array or
vector; or the content of the
JsonObject to your own data structure.
This seems like a constraint, but remember that you’re programming for an embedded platform with very limited resources, and that requires special techniques.
A positive side effect of following this recommendation is that the code is safe and memory efficient. It also encourages the separation of responsibilities: the function is only in charge of the JSON serialization and no specific JSON data leaks elsewhere is the program.