Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/yexuanxiao/basic_json
A modern C++ library for working with JSON data, aims to provide full support for the JSON standard, as well as allowing users to customize and extend the library according to their needs. The library offers a user-friendly and C++-idiomatic API, without compromising on performance.
https://github.com/yexuanxiao/basic_json
cpp cpp20 cpp23 json modern-cpp
Last synced: about 2 months ago
JSON representation
A modern C++ library for working with JSON data, aims to provide full support for the JSON standard, as well as allowing users to customize and extend the library according to their needs. The library offers a user-friendly and C++-idiomatic API, without compromising on performance.
- Host: GitHub
- URL: https://github.com/yexuanxiao/basic_json
- Owner: YexuanXiao
- License: cc0-1.0
- Created: 2023-12-24T20:26:20.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2024-07-14T15:52:45.000Z (6 months ago)
- Last Synced: 2024-07-15T16:23:03.317Z (6 months ago)
- Topics: cpp, cpp20, cpp23, json, modern-cpp
- Language: Bikeshed
- Homepage:
- Size: 581 KB
- Stars: 6
- Watchers: 2
- Forks: 2
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Modern C++ JSON Library
This is a modern C++ library for working with JSON data. It aims to provide full support for the JSON standard, as well as allowing users to customize and extend the library according to their needs. The library offers a user-friendly and C++-idiomatic API, without compromising on performance.
To simplify complexity, this implementation relies entirely on C++17’s constexpr if, and also uses C++20’s concepts. Although there are no plans at the moment, I think it can be ported to C++17.
## Goals
- Supports JSON Pointer, JSON Patch
- Supports UTF-8, UTF-16, and UTF-32 encodings
- Supports custom number type and integer extensions
- Supports JSON parsing, serialization, and manipulation
- Supports pretty-printing, indentation, and escaping options
- Supports user-defined types, custom allocators, and custom serializers- Use exceptions and exception safety
- Use herbceptions when it is available## Not Goals
- INF and NAN
- Reading comments
- Other extensions## Roadmap
Stage 1: JSON representation, accessors and modifiers
Stage 2: Serializer and deserializer
Stage 3: JSON Pointer and Patch
## Proposal draft
https://storage.nykz.org/proposals/minimal-json/
![figure](https://raw.githubusercontent.com/YexuanXiao/basic_json/master/figure.png)