- Arduino UNO
- Arduino Leonardo
- Arduino Mini
- Arduino Micro
- Arduino Mega
- Arduino Zero
- Arduino Due
- Arduino Yún
- Arduino M0
- Arduino MKRZero
- Arduino MKR1000
- Intel Galileo
- Intel Edison
- RedBearLab BLE Nano
- RedBearLab BLE Mini
- WeMos D1
- Atmel Studio
- IAR Embedded Workbench
- Visual Micro
ArduinoJson has a simple and intuitive syntax to handle object and arrays.
deserializeJson(doc, input); const char* city = doc["city"]; double temp = doc["weather"]["temp"];
Serialize and Deserialize
ArduinoJson supports both JSON serialization and deserialization.
doc["last_modification"] = time();
Fixed Memory Allocation
ArduinoJson uses a fixed memory allocation, allowing to work on devices with very little RAM.
You can choose to store data in the stack:
…or on the heap
This allocation strategy reduces heap fragmentation.
Parse From Stream
ArduinoJson can parse directly from an input
Parse input from the serial port:
…an Ethernet connection
…or a Wifi connection
Print to Stream
ArduinoJson is able to print directly to a
// Send the JSON to the serial port serializeJson(doc, Serial);
…an Ethernet connection
…or a Wifi connection
ArduinoJson works directly with strings stored in program memory (
You can use a Flash String as JSON input
…as a value
doc["cond"] = F("Sunny");
…or as a key
float temp = doc[F("temp")];
Implicit or Explicit Casts
ArduinoJson supports two coding styles, with implicit or explicit casts
const char* city = doc["city"]; float temp = doc["temperature"];
auto city = doc["city"].as<const char*>(); auto temp = doc["temperature"].as<float>();
NDJSON, JSON Lines
When parsing a JSON document from an input stream, ArduinoJson stops reading as soon as the document ends (e.g. at the closing brace).
ArduinoJson is doesn’t depend on any library; in fact, it doesn’t even depend on Arduino!
It means you can use ArduinoJson anywhere you can compile C++ code.
The best example is your test suite: you can comfortably test your program on your computer without touching a microcontroller.
ArduinoJson uses only the C++98 standard, so it doesn’t require a modern C++ compiler, which means you can use it with your old vendor toolchain.
ArduinoJson is continuously tested on:
- GCC 4.6, 4.7, 4.8, 4.9, 5, 6, and 7
- Clang 3.5, 3.6, 3.7, 3.8, 3.9, 4, 5, and 6
- Visual Studio 2010, 2012, 2013, 2015, and 2017
ArduinoJson compiles without any warning, even with the highest compiler settings:
ArduinoJson is a header-only library, meaning that all the code is the headers.
This dramatically simplifies the compilation as you don’t have to worry about compiling and linking the library.
A single file distribution is also available; that way, you just need to download one header.
Security is considered very seriously.
That is why ArduinoJson is integrated in Google’s OSS-Fuzz program.
As such, it is continuously fuzzed in search for security vulnerabilities.
ArduinoJson is open-source and uses one of the most permissive licenses so you can use it on any project.
✔️️ Commercial use
✔️️ Private use
The library is free; you don’t have to pay anything.
However, if you want to support the development, or just thank the author of the library, you can purchase the book Mastering ArduinoJson.
Not only you’ll encourage the development of the library, but you’ll also learn how to best use the library and probably some C++ too ;-)
They use ArduinoJson
The crazy project of an animated truck that shows when a shuttle arrives.
A frame with 7-segments displays that shows the number of followers on Twitter, Instagram and Instructables.
Atmoscan, a multisensor device aimed at monitoring indoor air quality.
AutoClock, a simple internet-enabled clock driven by NTP and GeoIP to give an automatic offset from UTP for your location.
A smart wallet with a screen to monitor cryptocurrency assets.
A thermostat that measures temperature and transfers the values to a backend. The backend analyses these values and sends instructions back to the device.
An ESP32 and a 2.9” ePaper Display reads Weather Underground and displays the weather
Monitor your 3D Printer’s OctoPrint Server on an OLED display over a wifi connection.
A LED display that shows weather, time, and many other things.
A fully-functioning WiFi controller for your LED lights, along with an app for your iOS or Android phone or tablet.
An LCD display that shows the number of subscriber of your YouTube channel
Shows pH, ORP, and temperature of a pool or spa, and uploads the data to ThingsBoard.io
Sending temperature and humidity from Arduino MKR1000 to Artik Cloud
Getting started project for “AllThingsTalk MAKER”. Client app works on NodeMCU
A temp & humidity sensing device created on an ESP8266 12F that uses the IoT JumpWay for device-to-device communication
Your library is a life-saver. Thank you for this excellent tool!
Arduino makers can use ArduinoJson in their projects to connect multiple Arduino gadgets, or Arduinos to their web services. The library includes a powerful parser which can deal with nested objects (great for customising the messaging format to fit with your objectives), it is light on memory (both RAM and flash), and it has a really nice API so it’s easy to use.
Thanks for your great work on this awesome library, I will definitely keep using it in my projects and recommend to others :)
I love ArduinoJson! Keep up the great work!
ArduinoJson library should be used as a benchmark/reference for making libraries. Truly elegant.
You've clearly done a tremendous amount of very good work. In fact, the existence of ArduinoJson was a key input into the decision and design process for our system's architecture a couple years ago.
It has a really elegant, simple API and it works like a charm on embedded and Windows/Linux platforms. We recently started using this on an embedded project and I can vouch for its quality.
I've been watching you consistently develop this library over the past six months, and I used it today for a publish and subscribe architecture designed to help hobbyists move into more advanced robotics. Your library allowed me to implement remote subscription in order to facilitate multi-processor robots.
its a great lib:) and i use it in everything!
This is a great library and I wouldn't be able to do the project I'm doing without it. I completely recommend it.
I am just starting an ESP8266 clock project and now I can output JSON from my server script and interpret it painlessly.
I tried aJson and json-arduino before trying your library. I always ran into memory problem after a while. I have no such problem so far with your library. It is working perfectly with my web services. Thanks Benoit for a very well polished product!
That I can work through use of ArduinoJson without ever touching a MCU is a huge plus! Kudos on what must have been a non-trivial task!
Your library has greatly simplified my parsing and will make maintaining my code vastly easier in the future. I'll certainly be buying your book to shorten my learning curve and begin to take full advantage of your knowledge and library.
It's a great library and I have found it to be very useful in my Arduino projects. Wanted to test it on Raspberry Pi as well. Included the Headers in my project and it works flawlessly. Keep up the good work!!
The most popular library
ArduinoJson is currently the most popular Arduino library on GitHub and PlatformIO.
We need your help to stay there, so don't forget to add a star .