ArduinoJson is a C++ JSON library for Arduino and IoT (Internet Of Things).
- JSON decoding (comments are supported)
- JSON encoding (with optional indentation)
- Elegant API, easy to use
- Fixed memory allocation (zero malloc)
- No data duplication (zero copy)
- Portable (written in C++98, can be used in any C++ project)
- Self-contained (no external dependency)
- Small footprint
- Input and output streams
- 100% code coverage
- Header-only library
- MIT License
- Comprehensive documentation
ArduinoJson works on the following hardware:
- Arduino boards: Uno, Due, Mini, Micro, Yun...
- Espressif chips: ESP8266, ESP32
- WeMos boards: D1, D1 mini, ...
- RedBearLab boards: BLE Nano, BLE Mini, WiFi Micro, LOLIN32...
- Teensy boards
- Intel boards: Edison, Galileo...
- Particle boards: Photon, Electron...
- Texas Instruments boards: MSP430...
ArduinoJson compiles with zero warning on the following compilers, IDEs, and platforms:
- Arduino IDE
- PlatformIO
- Energia
- Visual Micro
- Atmel Studio
- IAR Embedded Workbench
- Atollic TrueSTUDIO
- Keil uVision
- MPLAB X IDE
- GCC
- Clang
- Visual Studio
Here is a program that parses a JSON document with ArduinoJson.
char json[] = "{\"sensor\":\"gps\",\"time\":1351824120,\"data\":[48.756080,2.302038]}";
StaticJsonBuffer<200> jsonBuffer;
JsonObject& root = jsonBuffer.parseObject(json);
const char* sensor = root["sensor"];
long time = root["time"];
double latitude = root["data"][0];
double longitude = root["data"][1];
See the tutorial on arduinojson.org
Here is a program that generates a JSON document with ArduinoJson:
StaticJsonBuffer<200> jsonBuffer;
JsonObject& root = jsonBuffer.createObject();
root["sensor"] = "gps";
root["time"] = 1351824120;
JsonArray& data = root.createNestedArray("data");
data.add(48.756080);
data.add(2.302038);
root.printTo(Serial);
// This prints:
// {"sensor":"gps","time":1351824120,"data":[48.756080,2.302038]}
See the tutorial on arduinojson.org
The documentation is available on arduinojson.org, here are some shortcuts:
- The Examples show how to use the library in various situations.
- The API Reference contains the description of each class and function.
- The FAQ has the answer to virtually all questions.
- The ArduinoJson Assistant writes programs for you!
Do you like this library? Please star this project on GitHub!