diff --git a/CHANGELOG.md b/CHANGELOG.md index 6aedf8e0..d29f4af6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,10 +7,31 @@ HEAD * Fixed `deserializeJson()` silently accepting a `Stream*` (issue #978) * Fixed invalid result from `operator|` (issue #981) * Made `deserializeJson()` more picky about trailing characters (issue #980) -* Added `ARDUINOJSON_ENABLE_NAN` to enable NaN in JSON (issue #973) -* Added `ARDUINOJSON_ENABLE_INFINITY` to enable Infinity in JSON +* Added `ARDUINOJSON_ENABLE_NAN` (default=0) to enable NaN in JSON (issue #973) +* Added `ARDUINOJSON_ENABLE_INFINITY` (default=0) to enable Infinity in JSON -> ### BREAKING CHANGE +> ### BREAKING CHANGES +> +> #### NaN and Infinity +> +> The JSON specification allows neither NaN not Infinity, but previous +> versions of ArduinoJson supported it. Now, ArduinoJson behaves like most +> other libraries: a NaN or and Infinity in the `JsonDocument`, becomes +> a `null` in the output JSON. Also, `deserializeJson()` returns +> `InvalidInput` if the JSON document contains NaN or Infinity. +> +> This version still supports NaN and Infinity in JSON documents, but +> it's disabled by default to be compatible with other JSON parsers. +> If you need the old behavior back, define `ARDUINOJSON_ENABLE_NAN` and +> `ARDUINOJSON_ENABLE_INFINITY` to `1`;: +> +> ```c++ +> #define ARDUINOJSON_ENABLE_NAN 1 +> #define ARDUINOJSON_ENABLE_INFINITY 1 +> #include +> ``` +> +> #### The "or" operator > > This version slightly changes the behavior of the | operator when the > variant contains a float and the user requests an integer. diff --git a/src/ArduinoJson/Configuration.hpp b/src/ArduinoJson/Configuration.hpp index e98cabc8..588f7f98 100644 --- a/src/ArduinoJson/Configuration.hpp +++ b/src/ArduinoJson/Configuration.hpp @@ -137,12 +137,12 @@ // Support NaN in JSON #ifndef ARDUINOJSON_ENABLE_NAN -#define ARDUINOJSON_ENABLE_NAN 1 +#define ARDUINOJSON_ENABLE_NAN 0 #endif // Support Infinity in JSON #ifndef ARDUINOJSON_ENABLE_INFINITY -#define ARDUINOJSON_ENABLE_INFINITY 1 +#define ARDUINOJSON_ENABLE_INFINITY 0 #endif // Control the exponentiation threshold for big numbers diff --git a/test/JsonDeserializer/number.cpp b/test/JsonDeserializer/number.cpp index 1a33074d..45a946cb 100644 --- a/test/JsonDeserializer/number.cpp +++ b/test/JsonDeserializer/number.cpp @@ -3,6 +3,8 @@ // MIT License #define ARDUINOJSON_USE_LONG_LONG 0 +#define ARDUINOJSON_ENABLE_NAN 1 +#define ARDUINOJSON_ENABLE_INFINITY 1 #include #include diff --git a/test/Numbers/parseFloat.cpp b/test/Numbers/parseFloat.cpp index 4313c0d0..dbdfd454 100644 --- a/test/Numbers/parseFloat.cpp +++ b/test/Numbers/parseFloat.cpp @@ -3,6 +3,8 @@ // MIT License #define ARDUINOJSON_USE_DOUBLE 0 +#define ARDUINOJSON_ENABLE_NAN 1 +#define ARDUINOJSON_ENABLE_INFINITY 1 #include #include diff --git a/test/TextFormatter/writeFloat.cpp b/test/TextFormatter/writeFloat.cpp index 385051d4..39abe98e 100644 --- a/test/TextFormatter/writeFloat.cpp +++ b/test/TextFormatter/writeFloat.cpp @@ -6,6 +6,8 @@ #include #include +#define ARDUINOJSON_ENABLE_NAN 1 +#define ARDUINOJSON_ENABLE_INFINITY 1 #include #include