awesome-repositories.com
Blog
MCP
awesome-repositories.com

Descubre los mejores repositorios open-source con nuestra búsqueda potenciada por IA.

ExplorarBúsquedas curadasAlternativas open-sourceSoftware autohospedableBlogMapa del sitio
ProyectoAcerca deCómo clasificamosPrensaServidor MCP
Aviso legalPrivacidadTérminos
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
·
bblanchon avatar

bblanchon/ArduinoJson

0
View on GitHub↗
7,176 estrellas·1,166 forks·C++·MIT·5 vistasarduinojson.org↗

ArduinoJson

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.

Features

  • Embedded Serialization Utilities - Provides memory-optimized serialization utilities for converting structured data to JSON or MessagePack on embedded systems.
  • JSON Parsing - Reads JSON strings and converts them into structured data objects for programmatic access on microcontrollers.
  • Bracket Notation Accessors - Enables retrieval of nested values from parsed JSON documents using array-style bracket syntax.
  • JSON Serializers - Provides utilities to convert structured memory objects into compact JSON strings for transmission or storage.
  • Incremental JSON Parsing - Reads JSON data incrementally from I/O streams such as serial or network interfaces.
  • MessagePack Serializers - Encodes structured documents into compact MessagePack binary streams.
  • JSON Array Iteration - Allows looping through JSON array elements by holding a reference to the array within the document.
  • JSON Construction Utilities - Provides tools for building structured JSON documents in memory to prepare them for serialization.
  • JSON Object Iteration - Enumerates all key-value pairs in a JSON object using iterators or loops.
  • Embedded JSON Parsing - Implements high-efficiency JSON parsing specifically designed for microcontrollers with limited RAM.
  • Binary Data Encoding - Supports MessagePack as a compact binary encoding for efficient data exchange in constrained environments.
  • JSON Serialization - Converts stored JSON documents into minified or indented strings for output to buffers.
  • Stream Parsing Utilities - Processes incoming data chunks from communication streams to reconstruct JSON documents.
  • Embedded Memory Management - Controls RAM usage through pool-based allocation, string deduplication, and flash memory storage to fit constrained hardware.
  • Fixed-Pool Allocators - Implements a fixed-size memory pool for document storage to avoid dynamic heap fragmentation.
  • Flash Memory String Referencing - Reads constant strings directly from program flash memory to conserve volatile system RAM.
  • String Deduplication - Reduces RAM consumption by storing only one instance of identical keys or values within a document.
  • Implicit Type Casting - Automatically converts parsed JSON values to native C++ types without requiring explicit casting.
  • JSON Key Listing - Iterates over all keys present in a JSON object and returns them for further processing.
  • Stream-Based Serialization - Implements serialization of internal data structures directly to output streams for efficient transmission.
  • Type Conversion and Casting - Uses C++ templates to automatically map JSON values to native types via implicit or explicit casting.
  • Zero-Copy String Views - Utilizes non-owning string views to reference existing buffers and avoid redundant memory allocations.
  • JSON - Evaluates equality or order between two JSON variants by analyzing their types.
  • Parsing Behavior Configurations - Adjusts the handling of Unicode, comments, and nesting depth to meet application requirements.
  • Binary Data Accessors - Provides direct reading and writing of raw binary data embedded within MessagePack streams.
  • Binary Size Calculation - Determines the serialized byte size of a MessagePack binary without executing the full conversion.
  • Custom Type Converters - Allows user-defined C++ types to be serialized and deserialized via custom converters.
  • Cast Range Validations - Validates that numeric values fit within the target integer type before performing a cast to prevent overflow.
  • Streaming I/O - Reads and writes JSON data directly to byte stream interfaces like serial ports and files.
  • Custom JSON Output Writers - Defines a custom output class to control how serialized bytes are written to hardware or buffers.
  • Pre-Measurement Serializations - Calculates the exact byte length of a JSON string before performing the actual serialization.
  • Custom Type Converters - ArduinoJson registers serialization and deserialization rules for user-defined or third-party data types.
  • Deserialization Discarding - Minimizes memory usage by discarding unwanted JSON keys during the deserialization process.
  • JSON Document Storage - Enables the persistence of JSON documents into non-volatile EEPROM memory.
  • JSON Object Merging - Combines two or more JSON objects into a single document by copying key-value pairs.
  • Non-Standard Parsers - Accepts non-standard JSON extensions, including single-quoted strings and comments, during parsing.
  • Memory Footprint Optimizers - Optimizes the memory footprint of JSON documents by tuning byte sizes for identifiers and string lengths.
  • Parsing Exception Handling - Detects invalid input or memory exhaustion by checking the return status of parsing functions.
  • Recursive JSON Search - Recursively traverses nested JSON documents to locate specific keys and their associated values.
  • Local Filesystem Storage - Allows application settings stored as JSON documents to be persisted on a local filesystem.
  • Custom JSON Input Readers - Defines a custom byte-reading interface to ingest JSON data from non-standard input sources.
  • Response Body Parsing - Converts the raw body of an incoming HTTP response into a structured JSON document.
  • Embedded Communication Libraries - Facilitates the exchange of JSON payloads over HTTP and UDP network protocols in IoT contexts.
  • Custom Memory Allocators - Allows users to define custom allocators to manage data placement, such as using external PSRAM.
  • Hardware Integration Streams - Provides support for environment-specific streams and strings to integrate seamlessly with target hardware.
  • Binary Size Optimizations - Reduces the final binary footprint by removing Unicode decoding support at compile time.
  • Program Memory String Storage - Reads constant strings directly from program flash memory instead of volatile RAM to conserve space.
  • Sequential - ArduinoJson reads one complete JSON document at a time from a stream to support line-delimited formats.
  • C-Array Synchronization - Transfers values between C arrays and JSON arrays in either direction.
  • Extraction Error Handlers - Returns default values when requested fields are missing or have unexpected types to handle extraction failures.
  • Protocol I/O Decoupling - Decouples JSON processing from hardware protocols using abstract reader and writer interfaces.
  • JSON Syntax Validators - Validates that input strings or streams contain syntactically correct JSON before parsing.
  • Symmetric Data Models - Uses a shared internal representation to support both JSON and MessagePack binary formats.
  • Parsing Field Filters - Discards unwanted keys during parsing to minimize the memory footprint of the resulting document.
  • Development Libraries - JSON library optimized for embedded systems.

Historial de estrellas

Gráfico del historial de estrellas de bblanchon/arduinojsonGráfico del historial de estrellas de bblanchon/arduinojson

Búsqueda con IA

Explora más repositorios increíbles

Describe lo que necesitas en lenguaje sencillo: la IA clasifica miles de proyectos open-source curados por relevancia.

Start searching with AI

Preguntas frecuentes

¿Qué hace bblanchon/arduinojson?

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.

¿Cuáles son las características principales de bblanchon/arduinojson?

Las características principales de bblanchon/arduinojson son: Embedded Serialization Utilities, JSON Parsing, Bracket Notation Accessors, JSON Serializers, Incremental JSON Parsing, MessagePack Serializers, JSON Array Iteration, JSON Construction Utilities.

¿Qué alternativas de código abierto existen para bblanchon/arduinojson?

Las alternativas de código abierto para bblanchon/arduinojson incluyen: johnezang/jsonkit — JSONKit is an Objective-C library used for parsing, serializing, and manipulating JSON data. It functions as a JSON… sbjson/sbjson — SBJson is an Objective-C JSON parser and generator designed for the parsing and generation of JSON data. It functions… serde-rs/json — This is a Rust serialization library for converting data structures to and from JSON strings and byte streams. It is… nanopb/nanopb — Nanopb is a lightweight C implementation of Protocol Buffers designed for resource-constrained systems and… ibireme/yyjson — yyjson is a high-performance C library for parsing, serializing, and manipulating JSON data structures. It functions… federico-busato/modern-cpp-programming — This project is a comprehensive educational resource and programming course covering C++ language semantics and…

Alternativas open-source a ArduinoJson

Proyectos open-source similares, clasificados según cuántas características comparten con ArduinoJson.
  • johnezang/jsonkitAvatar de johnezang

    johnezang/JSONKit

    6,180Ver en GitHub↗

    JSONKit is an Objective-C library used for parsing, serializing, and manipulating JSON data. It functions as a JSON parser that converts text into native data structures and a serializer that transforms native objects into formatted JSON text. The library includes a gzip compression wrapper that compresses serialized JSON payloads to reduce network transfer sizes and automatically detects and decompresses gzip buffers before decoding. The toolset provides capabilities for JSON parsing and serialization, supporting customizable indentation, character escaping, and flexible comment handling.

    Objective-C
    Ver en GitHub↗6,180
  • sbjson/sbjsonAvatar de SBJson

    SBJson/SBJson

    3,717Ver en GitHub↗

    SBJson is an Objective-C JSON parser and generator designed for the parsing and generation of JSON data. It functions as a strict JSON validator, enforcing rigid grammar rules to ensure input data adheres to formal specifications. The project features an incremental JSON stream parser that processes UTF8 data in chunks to extract documents without loading the entire payload into memory. It also serves as a JSON data serializer that transforms native data objects into formatted strings using deterministic key sorting. The system manages data serialization workflows and implements security mea

    Objective-C
    Ver en GitHub↗3,717
  • serde-rs/jsonAvatar de serde-rs

    serde-rs/json

    5,587Ver en GitHub↗

    This is a Rust serialization library for converting data structures to and from JSON strings and byte streams. It is built as a framework within the Serde ecosystem, providing both a strongly typed parser for compile-time safety and a recursive value tree for manipulating JSON data without a predefined schema. The project supports both typed and untyped processing. It can map JSON data into specific Rust types for schema conformity or parse input into a flexible, schemaless representation. It also includes macro-based utilities for the dynamic construction of JSON objects.

    Rustjsonrustserde
    Ver en GitHub↗5,587
  • nanopb/nanopbAvatar de nanopb

    nanopb/nanopb

    5,437Ver en GitHub↗

    Nanopb is a lightweight C implementation of Protocol Buffers designed for resource-constrained systems and microcontrollers. It functions as both an embedded serialization library for encoding and decoding structured data and a code generator that transforms definition files into compact C source and header files. The project is distinguished by its focus on static memory allocation, using fixed maximum sizes for strings and arrays to avoid dynamic memory allocation and heap fragmentation. It employs a callback-based streaming mechanism to process messages or fields that exceed available phys

    C
    Ver en GitHub↗5,437
Ver las 30 alternativas a ArduinoJson→