# DaveGamble/cJSON

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/davegamble-cjson).**

12,466 stars · 3,438 forks · C · mit

## Links

- GitHub: https://github.com/DaveGamble/cJSON
- awesome-repositories: https://awesome-repositories.com/repository/davegamble-cjson.md

## Description

cJSON is a lightweight library for parsing, creating, and modifying JSON data structures within C applications. It provides a comprehensive set of utilities for transforming raw text into navigable objects, manipulating data fields within collections, and serializing complex structures into formatted or unformatted strings.

The library is designed for memory-sensitive and resource-constrained environments, utilizing manual memory management and type-tagged union structures to maintain a minimal footprint. It employs recursive descent parsing and in-place string manipulation to process data efficiently, while representing hierarchies through doubly linked list nodes to facilitate traversal and modification.

The project functions as a self-contained utility with no external dependencies, making it suitable for integration into embedded systems. It provides the necessary tools for managing data interchange and maintaining accurate information states throughout an application lifecycle.

## Tags

### Data & Databases

- [JSON Parsers](https://awesome-repositories.com/f/data-databases/json-parsers.md) — Provides a lightweight, dependency-free library for parsing and modifying JSON data structures in C applications.
- [Embedded](https://awesome-repositories.com/f/data-databases/json-processors/embedded.md) — Navigates and manipulates structured JSON objects with high memory efficiency for resource-constrained environments.
- [JSON Serialization Libraries](https://awesome-repositories.com/f/data-databases/json-serialization-libraries.md) — Converts complex C data structures into formatted JSON strings for storage and network transmission. ([source](https://github.com/DaveGamble/cJSON#readme))
- [JSON](https://awesome-repositories.com/f/data-databases/data-serialization-formats/data-formats/json.md) — Provides functions to create, update, and remove data fields within JSON structures. ([source](https://github.com/DaveGamble/cJSON#readme))
- [Recursive Descent Parsers](https://awesome-repositories.com/f/data-databases/data-transformation-functions/recursive-processors/recursive-logic-implementations/recursive-descent-parsers.md) — Employs recursive descent parsing to build trees of nested data nodes from input strings.

### Hardware & IoT

- [Embedded Data Handling Libraries](https://awesome-repositories.com/f/hardware-iot/embedded-data-handling-libraries.md) — Provides lightweight data interchange utilities specifically designed for memory-sensitive and resource-constrained embedded environments.

### Software Engineering & Architecture

- [String Formatting Utilities](https://awesome-repositories.com/f/software-engineering-architecture/string-formatting-utilities.md) — Transforms complex data structures into formatted or unformatted JSON strings for efficient storage and transmission.

### Operating Systems & Systems Programming

- [Manual Memory Management Utilities](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/process-and-memory-management/memory-management/allocation-strategies/memory-allocation-libraries/manual-memory-management-utilities.md) — Requires explicit allocation and deallocation of every node to maintain full control over memory footprint.
