{"full_name":"nlohmann/json","owner":"nlohmann","name":"json","url":"https://github.com/nlohmann/json","description":"JSON for Modern C++","homepage":"https://json.nlohmann.me","topics":[],"language":"C++","license":"MIT","avatar":"https://avatars.githubusercontent.com/u/159488?u=7d63c3efe48fc8c84dd1219413787f2acc8aab63&v=4","created_at":"2013-07-04T08:47:49Z","pushed_at":"2026-11-10T09:08:17Z","metrics":{"stars":50861,"forks":7517,"watchers":732,"issues":2523,"prs":2160,"releases":45,"issues_open":null,"issues_closed":null,"prs_open":null,"prs_closed":null,"prs_merged":null,"discussions":1020},"growth":{"day":{"stars":9,"forks":-1,"base_day":"2026-11-09"},"week":{"stars":26,"forks":4,"base_day":"2026-11-03"},"month":{"stars":112,"forks":0,"base_day":"2026-10-11"}},"history":{"dates":["2026-09-06","2026-09-07","2026-09-08","2026-09-09","2026-09-10","2026-09-11","2026-09-12","2026-09-13","2026-09-14","2026-09-15","2026-09-16","2026-09-17","2026-09-18","2026-09-19","2026-09-20","2026-09-21","2026-09-22","2026-09-23","2026-09-24","2026-09-25","2026-09-26","2026-09-27","2026-09-28","2026-09-29","2026-09-30","2026-10-01","2026-10-02","2026-10-03","2026-10-04","2026-10-05","2026-10-06","2026-10-07","2026-10-08","2026-10-09","2026-10-10","2026-10-11","2026-10-12","2026-10-13","2026-10-14","2026-10-15","2026-10-16","2026-10-17","2026-10-18","2026-10-19","2026-10-20","2026-10-21","2026-10-22","2026-10-23","2026-10-24","2026-10-25","2026-10-26","2026-10-27","2026-10-28","2026-10-29","2026-10-30","2026-10-31","2026-11-01","2026-11-02","2026-11-03","2026-11-04","2026-11-09","2026-11-10"],"stars":[50540,50544,50552,50561,50569,50572,50580,50586,50592,50598,50604,50614,50620,50625,50633,50636,50639,50648,50654,50662,50672,50682,50690,50688,50692,50703,50705,50711,50715,50717,50724,50727,50730,50736,50745,50749,50751,50754,50753,50757,50761,50762,50766,50771,50775,50782,50788,50788,50796,50797,50801,50805,50812,50811,50818,50824,50830,50829,50835,50838,50852,50861],"forks":[7491,7495,7495,7494,7494,7495,7496,7495,7496,7496,7498,7498,7500,7501,7502,7503,7502,7502,7503,7505,7507,7508,7508,7510,7511,7510,7512,7513,7512,7510,7511,7511,7513,7514,7515,7517,7517,7516,7516,7516,7517,7515,7516,7517,7515,7515,7513,7511,7511,7510,7509,7509,7509,7509,7511,7510,7512,7512,7513,7513,7518,7517],"watchers":[748,748,747,746,746,746,746,746,746,746,746,746,746,746,746,746,746,746,747,747,746,746,746,746,746,745,742,741,741,741,740,740,740,741,741,741,741,741,741,740,740,740,740,740,740,740,739,739,738,733,733,733,733,733,733,733,731,731,731,731,732,732],"issues_open":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"prs_open":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},"boards":{},"same_owner":[],"issues":[{"number":1170,"title":"Custom Precision on floating point numbers","comments":39,"created_at":"2018-07-19T18:25:51Z"},{"number":3578,"title":"Unable to use gnu mpz types for NumberIntegerType","comments":25,"created_at":"2022-07-11T13:53:24Z"},{"number":5294,"title":"Ideas: exploring ways to reduce compilation time","comments":10,"created_at":"2026-07-22T19:54:52Z"},{"number":5298,"title":"Idea: arena / PMR document mode (O(1) teardown)","comments":7,"created_at":"2026-07-22T21:49:14Z"},{"number":5959,"title":"Proposal: minimal API for an opt-in C++26 static-reflection extension","comments":4,"created_at":"2026-10-29T09:42:34Z"},{"number":6027,"title":"Idea: Decode into an existing value and reuse its storage (get_into)","comments":3,"created_at":"2026-11-05T15:15:14Z"},{"number":5786,"title":"The exception classes' create() functions are public by accident","comments":3,"created_at":"2026-10-08T06:43:05Z"},{"number":5297,"title":"Idea: canonical / deterministic serialization (RFC 8785 JCS)","comments":2,"created_at":"2026-07-22T21:46:04Z"}],"discussions":[{"number":5955,"title":"Clarification of JSON key escape decoding and name delivery timing, separately for parser_callback_t and json_sax::key","comments":2,"category":"Q&A","created_at":"2026-10-28T18:43:36Z"},{"number":5893,"title":"Companion headers: a concept for optional features outside json.hpp","comments":2,"category":"Ideas","created_at":"2026-10-22T18:09:55Z"},{"number":5789,"title":"Query.Farm JSON Schema for DuckDB: suggestion for the Customers page","comments":0,"category":"General","created_at":"2026-10-08T16:34:55Z"},{"number":5749,"title":"Are AI assisted contributions welcome?","comments":2,"category":"Q&A","created_at":"2026-10-01T21:24:23Z"},{"number":5574,"title":"new point release","comments":1,"category":"General","created_at":"2026-09-25T03:52:08Z"},{"number":5535,"title":"Great job and thank you","comments":1,"category":"General","created_at":"2026-09-16T14:30:45Z"},{"number":5384,"title":"[C++26] Reflection-based to_json/from_json: 672 lines replace NLOHMANN_DEFINE_TYPE_INTRUSIVE","comments":4,"category":"Show and tell","created_at":"2026-08-16T06:36:35Z"},{"number":5377,"title":"When writing empty objects the serializer ignores pretty printing the empty object.","comments":1,"category":"Ideas","created_at":"2026-08-12T01:47:42Z"}],"latest_release":{"name":"JSON for Modern C++ version 3.12.0","tag":"v3.12.0","published_at":"2025-04-11T08:43:39Z","body":"Release date: 2025-04-11\r\nSHA-256: aaf127c04cb31c406e5b04a63f1ae89369fccde6d8fa7cdda1ed4f32dfc5de63 (json.hpp), b8cb0ef2dd7f57f18933997c9934bb1fa962594f701cd5a8d3c2c80541559372 (include.zip), 42f6e95cad6ec532fd372391373363b62a14af6d771056dbfc86160e6dfff7aa (json.tar.xz)\r\n\r\n## Summary\r\n\r\nThis release fixes some bugs found in the [3.11.3](https://github.com/nlohmann/json/releases/tag/v3.11.3) release and adds some new features.\r\n\r\nAll changes are backward-compatible.\r\n\r\n:moneybag: Note you can **support this project** via [GitHub sponsors](https://github.com/sponsors/nlohmann) or [PayPal](https://paypal.me/nlohmann).\r\n\r\n## Key updates and enhancements\r\n\r\n- **Diagnostic byte positions**: A new macro, [`JSON_DIAGNOSTIC_POSITIONS`](https://json.nlohmann.me/api/macros/json_diagnostic_positions/), introduces member functions to query the **byte positions** of values in the input they were parsed from. When enabled, this information is also included in exceptions to help pinpoint errors. #4517 #4455 #4570 #4569 #4572 #4571 #4579 #4585 #4561\r\n- **Enhanced conversion macros**: The [**conversion macros for arbitrary types**](https://json.nlohmann.me/features/arbitrary_types/#simplify-your-life-with-macros) now include several upgrades:\r\n    - All macros are **templated**, supporting `json`, [**`ordered_json`**](https://json.nlohmann.me/api/ordered_json/), and any other `basic_json` specialization. #4597 #2528 #4377 #2532 #2843 #3810 #4608\r\n    - **Derived classes** can now be seamlessly converted to/from JSON using the new `NLOHMANN_DEFINE_DERIVED_TYPE_*` macros. #4033 #2199 #4562\r\n- **Support for `std::optional`**: The library now supports conversions from/to `std::optional` types when compiled with C++17. #1749 #4036\r\n- **Flexible string compatibility**: Functions [`patch`](https://json.nlohmann.me/api/basic_json/patch/), [`diff`](https://json.nlohmann.me/api/basic_json/diff/), and [`flatten`](https://json.nlohmann.me/api/basic_json/flatten/) now work with arbitrary string types. #4536 #4134 #4613 #4019\r\n- **Binary format enhancements**:\r\n    - The [**BJData mapping**](https://json.nlohmann.me/features/binary_formats/bjdata/) now supports draft 3, including optimized binary array types. #4513 #4588\r\n    - The [**BSON mapping**](https://json.nlohmann.me/features/binary_formats/bson/) has added support for unsigned 64-bit integers. #4590 #4535 #3894\r\n    - The `get_number` function used in the binary format implementations has been optimized to read multiple bytes at once. #4391\r\n- **Multidimensional array conversion**: Multidimensional C-style arrays can now be directly converted to JSON. #4262 #4248\r\n- **Filesystem paths in UTF-8**: The conversions from/to `std::filesystem::path` are now encoded to UTF-8 strings by default on all operating systems. #4271 #4631\r\n- **CMake 4.0 support**. By adjusting the CMake minimal version to 3.5, CMake 4.0 can be used without warning or error. #4709\r\n\r\n## Changes and fixes\r\n\r\n- The [`iteration_proxy`](https://json.nlohmann.me/api/basic_json/items/) is now a **`std::forward_iterator`** instead of just an `std::input_iterator`. This allows more use cases when [`items()`](https://json.nlohmann.me/api/basic_json/items/) is fed into C++20 `std::views`. The iterator always satisfied all requirements for a forward iterator, but was exposed as only an input iterator by the used iterator tag. #4371 #4372\r\n- Fix the conversion from enums with unsigned underlying type to JSON. #4236 #4237\r\n- Fix GDB pretty printer which was broken since `m_data` added. #4343 #4309\r\n- Update natvis to reflect 3.11.3 and the current structure of `basic_json`. #4451 #4438 #4438\r\n- Fix crash when passing `nullptr` to [`parse`](https://json.nlohmann.me/api/basic_json/parse/) function expecting `FILE*`. Instead, now an exception is thrown. #4485 #4487\r\n- Fix number parsing such that integers are not parsed to float when `EINTR` set in `errno`. #4506\r\n- Fix [SAX output of `number_float`](https://json.nlohmann.me/features/parsing/sax_i"},"readme":true,"readme_zh":false,"news":[],"stale":false,"snapshot_at":"2026-11-10T09:35:25Z","history_start":"2026-09-06"}