ArduinoJson is a C++ JSON library for Arduino and IoT (Internet Of Things).
Features
-
Supports single quotes as a string delimiter
Compatible with NDJSON and JSON Lines
Efficient
Versatile
Supports custom allocators (to use external RAM chip, for example)
Supports ``String` <https://arduinojson.org/v6/api/config/enable_arduino_string/>`_, ``std::string` <https://arduinojson.org/v6/api/config/enable_std_string/>`_, and ``std::string_view` <https://arduinojson.org/v6/api/config/enable_string_view/>`_
Supports ``Stream` <https://arduinojson.org/v6/api/config/enable_arduino_stream/>`_ and ``std::istream`/
std::ostream<https://arduinojson.org/v6/api/config/enable_std_stream/>`_Supports Flash strings
Supports custom readers and custom writers
Supports custom converters
Portable
Usable on any C++ project (not limited to Arduino)
Compatible with C++11, C++14 and C++17
Support for C++98/C++03 available on ArduinoJson 6.20.x
Zero warnings with
-Wall -Wextra -pedanticand/W4Works with virtually any board
Tested on all major development environments
Well designed
Self-contained (no external dependency)
constfriendly``for` friendly <https://arduinojson.org/v6/api/jsonobject/begin_end/>`_
Handles integer overflows
Well tested
Continuously tested on
Passes all default checks of clang-tidy
Well documented
Vibrant user community
Most popular of all Arduino libraries on GitHub
Quickstart
Deserialization
Here is a program that parses a JSON document with ArduinoJson.
char json[] = "{\"sensor\":\"gps\",\"time\":1351824120,\"data\":[48.756080,2.302038]}";
DynamicJsonDocument doc(1024);
deserializeJson(doc, json);
const char* sensor = doc["sensor"];
long time = doc["time"];
double latitude = doc["data"][0];
double longitude = doc["data"][1];
See the tutorial on arduinojson.org
Serialization
Here is a program that generates a JSON document with ArduinoJson:
DynamicJsonDocument doc(1024);
doc["sensor"] = "gps";
doc["time"] = 1351824120;
doc["data"][0] = 48.756080;
doc["data"][1] = 2.302038;
serializeJson(doc, Serial);
// This prints:
// {"sensor":"gps","time":1351824120,"data":[48.756080,2.302038]}
See the tutorial on arduinojson.org
Sponsors
ArduinoJson is thankful to its sponsors. Please give them a visit; they deserve it!
If you run a commercial project that embeds ArduinoJson, think about sponsoring the library’s development: it ensures the code that your products rely on stays actively maintained. It can also give your project some exposure to the makers’ community.
If you are an individual user and want to support the development (or give a sign of appreciation), consider purchasing the book Mastering ArduinoJson ❤, or simply cast a star ⭐.