Repolode
nlohmann

nlohmann/json

一个仅头文件的 C++11 库,用类似 STL 的语法在 C++ 中解析、构造、操作和序列化 JSON。

Star
50,790
Fork
7,511
未关闭 Issue
19
最近提交
5小时前

这是什么?

JSON for Modern C++ 是一个 C++ JSON 库,让开发者像操作原生数据类型一样处理 JSON 值。核心类 basic_json(别名 nlohmann::json)可以由字面量、STL 容器或自定义类型构造,并通过运算符和熟悉的容器方法访问。

整个库以单个头文件形式发布,无需额外编译步骤或依赖即可加入项目。它支持 JSON Pointer(RFC 6901)、JSON Patch(RFC 6902)和 JSON Merge Patch(RFC 7396),可生成差异补丁,并能与 BSON、CBOR、MessagePack、UBJSON、BJData、BON8 等二进制格式互相转换。

自定义类型可通过 to_json、from_json 函数或辅助宏映射为 JSON。项目提供完整文档和 API 参考,并支持 CMake 及主流包管理器集成。

核心功能

  • 01单个头文件集成,无外部依赖,基于 C++11 编写。
  • 02JSON 值的访问和赋值语法直观,与 STL 容器风格一致。
  • 03支持从字符串、流和迭代器区间解析,并可带缩进序列化输出。
  • 04支持 JSON Pointer、JSON Patch 和 JSON Merge Patch,包括生成差异补丁。
  • 05支持与 CBOR、MessagePack、BSON、UBJSON 等二进制格式互相转换。
  • 06提供宏和转换函数,便于将自定义 C++ 类型映射为 JSON。

适用场景

  • 在 C++ 应用中读取配置文件或处理 API 数据。
  • 从 C++ 数据结构构造 JSON 响应或消息。
  • 计算并应用两个 JSON 文档版本之间的补丁。
  • 将 C++ 结构体序列化为 JSON 或二进制格式用于存储或传输。

快速上手

  1. 1

    将仓库中的单个头文件 json.hpp 添加到项目中,或通过包管理器安装

  2. 2

    在 C++ 代码中使用 #include <nlohmann/json.hpp> 引入头文件,即可开始使用 json 类型

使用前须知

  • README 指出存在更快的 JSON 库,因此该库更注重易用性而非速度。

标签

常见问题

json 是什么?
一个仅头文件的 C++11 库,用类似 STL 的语法在 C++ 中解析、构造、操作和序列化 JSON。 JSON for Modern C++ 是一个 C++ JSON 库,让开发者像操作原生数据类型一样处理 JSON 值。核心类 basic_json(别名 nlohmann::json)可以由字面量、STL 容器或自定义类型构造,并通过运算符和熟悉的容器方法访问。
json 可以免费使用吗?用的什么许可证?
json 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
json 还在维护吗?
活跃维护中。json 最近一次提交是在 2026年10月21日。
json 适合用来做什么?
在 C++ 应用中读取配置文件或处理 API 数据。 从 C++ 数据结构构造 JSON 响应或消息。 计算并应用两个 JSON 文档版本之间的补丁。 将 C++ 结构体序列化为 JSON 或二进制格式用于存储或传输。
json 怎么安装和运行?
将仓库中的单个头文件 json.hpp 添加到项目中,或通过包管理器安装 在 C++ 代码中使用 #include <nlohmann/json.hpp> 引入头文件,即可开始使用 json 类型
在哪里获取 json?
源代码和安装说明在 GitHub 上:https://github.com/nlohmann/json

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目