A C++ header-only library for JSON and JSON-like data formats with support for JSON Schema, JSONPath, CBOR, MessagePack, and more.
jsoncons is a C++ header-only library for constructing, parsing, and serializing JSON and JSON-like binary formats such as CBOR, MessagePack, and BSON. It solves the need for a high-performance, memory-efficient JSON library in C++ that also supports advanced features like JSON Schema validation, JSONPath queries, and strong typing via reflection.
C++ developers working with JSON data, especially those needing support for multiple data formats, large text processing, or integration with binary protocols like CBOR and MessagePack.
Developers choose jsoncons for its comprehensive feature set, header-only design, and efficiency with large datasets. It uniquely combines JSON and binary format support with advanced querying and validation tools in a single library.
A C++, header-only library for constructing JSON and JSON-like data formats, with JSON Pointer, JSON Patch, JSON Schema, JSONPath, JMESPath, CSV, MessagePack, CBOR, BSON, UBJSON, toon-format
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Handles JSON, CBOR, MessagePack, BSON, and more through extensions, enabling seamless multi-format data processing in a single library.
Designed for high performance with very large JSON texts using cursor-level access for StAX-style pull parsing, ideal for streaming applications.
Supports mapping JSON to C++ structures with reflection traits, enabling type-safe serialization and deserialization without manual parsing.
Implements JSONPath, JMESPath, JSON Pointer, and JSON Patch, providing robust tools for querying and transforming JSON data directly in C++.
The API offers multiple usage modes (variant-like, strongly-typed, cursor-level), which can be overwhelming for developers needing only simple JSON operations.
The library includes deprecated names that require macro definitions like JSONCONS_NO_DEPRECATED to suppress, adding complexity for new code to avoid breaking changes.
Relies heavily on exceptions for error reporting; disabling them via JSONCONS_NO_EXCEPTIONS leads to std::terminate calls, which may not suit all environments.