Description

The macro ARDUINOJSON_ENABLE_NAN activates the support of NaN in JSON input and output documents.

If ARDUINOJSON_ENABLE_NAN is set to 0 (the default):

If ARDUINOJSON_ENABLE_NAN is set to 1:

The default value (ARDUINOJSON_ENABLE_NAN == 0) is more portable, because it matches the behavior of most JSON libraries. Indeed, the JSON specification doesn’t allow NaN, so very few JSON libraries support it.

Only 0 and 1 are valid. Any other value (like false or true) will produce a compilation error.

ARDUINOJSON_ENABLE_NAN as added in ArduinoJson 6.11; previously, NaN was always supported.

How to force the value?

If you need to support NaN in your program, define ARDUINOJSON_ENABLE_NAN to 1 before including ArduinoJson.h:

#define ARDUINOJSON_ENABLE_NAN 1
#include <ArduinoJson.h>

Several .ino or .cpp files?

Be careful if several compilation units compose your program, i.e., if your project contains several .ino or .cpp files.

You should define the same value of ARDUINOJSON_ENABLE_NAN in each compilation unit; otherwise, the executable will be much bigger because it will contain two variants of the library.

See also