ArduinoJson returns DeserializationError::NotSupported when the input document contains a feature that is not supported by the library.

JSON

deserializeJson() returns NotSupported when the input contains a Unicode escape sequence like \u2665.

ArduinoJson can decode Unicode escape sequence, but this feature is disabled by default because it makes the code bigger. To enable it, you must define ARDUINOJSON_DECODE_UNICODE to 1, like that:

#define ARDUINOJSON_DECODE_UNICODE 1
#include <ArduinoJson.h>

Please note that the support for Unicode escape sequence is not fully compliant with the specification. ArduinoJson produces proper UTF-8 only for code points below 0x10000. Above this limit, it produces a degenerated variant of UTF-8 know as CESU-8. Simply put, ArduinoJson treats surrogate pairs (characters that require two escape sequences) as two independent characters.

MessagePack

ArduinoJson only supports a subset of the MessagePack specification. If the input contains a feature that is not currently supported, deserializeMsgPack returns NotSupported.

Here is the list of supported features:

Feature Supported?
bool yes
int yes
float yes
str yes
bin no
array yes
map yes
ext no
timestamp no