ArduinoJson is a C++ library for parsing and manipulating JSON data and MessagePack binary streams on microcontrollers with limited memory and processing power. It provides the core primitives necessary for embedded data serialization and parsing, enabling devices to exchange structured data over serial or network interfaces.
The library is distinguished by its focus on microcontroller memory management, employing strategies such as pool-based allocation, string deduplication, and non-owning string views to minimize RAM usage. It further optimizes for constrained environments by allowing constant strings to be read directly from program flash memory and providing filter-based deserialization to discard unwanted keys during parsing.
Beyond basic parsing, the project covers a broad range of capabilities including stream-based I/O for handling large documents, binary data exchange via MessagePack, and persistence mechanisms for saving documents to EEPROM or filesystems. It also includes utilities for data extraction with implicit type casting, document construction, and integration with network protocols like HTTP and UDP.
The library supports project management via CMake and provides platform-specific I/O support to integrate with target hardware.