
一个头文件搞定 C JSONnlohmann/json 上手笔记【免费下载链接】jsonJSON for Modern C项目地址: https://gitcode.com/GitHub_Trending/js/jsonnlohmann/json 是一个面向现代 C 的 JSON 库核心能力就一件事让你像操作普通容器一样操作 JSON 数据。它把解析、序列化、嵌套访问这些 C 里最繁琐的部分收进一个单头文件里装好就能编译不需要配置依赖。为什么值得关注说实话我觉得它最大的优点不是功能多而是不折腾。单头文件交付。整个库的可用形态就是 single_include/nlohmann/json.hpp 这一个文件拷进项目、#include一下零依赖、没有需要额外链接的库。语法贴近直觉。创建 JSON 用的是初始化列表取值用[]迭代用范围 for基本不需要专门学一套 API。久经生产验证。从 Blender、TensorFlow 到各种游戏引擎大量知名软件在用这个库见下文配图MIT 协议商用也没有顾虑。五分钟上手最简单的方式是 clone 仓库把single_include目录加进你的包含路径即可git clone https://gitcode.com/GitHub_Trending/js/json然后第一行代码长这样#include nlohmann/json.hpp using json nlohmann::json; json j {{name, demo}, {ok, true}}; std::cout j.dump() \n; // {name:demo,ok:true}字符串进来是dump()出的紧凑 JSON反过来json::parse(一段字符串)就能还原成对象往返都很直接。日常怎么用它日常用得最多的场景无非两个构造嵌套数据、遍历读取数据。构造时直接用嵌套的初始化列表层级关系一目了然json req { {url, /api/v1/users}, {page, 2}, {filter, {{role, admin}, {active, true}}} };读取时把它当成能自动转型的容器来用对象可以按 key 访问数组可以用下标或迭代器访问at()会在 key 不存在时抛异常而不是悄悄创建默认值——这个区别在写健壮代码时很有用。items()配合 C17 结构化绑定遍历对象也很顺手for (auto [key, value] : req.items()) { std::cout key : value \n; }几个让你省心的细节JSON Pointer 和 JSON Patch。j[/filter/role_json_pointer]这样的语法能直达深层嵌套的值不需要一层层写中间变量配合 RFC 6902 的 patch 操作还能对文档做增删改式的批量修改。自定义类型转换。给自己的结构体写一对to_json/from_json函数后json j myStruct和myStruct s j.getMyStruct()就能自动互转枚举类型也有专门的序列化宏支持。二进制格式互通。同一份数据可以在 CBOR、MessagePack、BSON 等二进制格式之间转换比如json::to_msgpack(j)一行搞定做跨语言传输或存储时有备胎。放进你的项目如果你用 CMake官方提供了nlohmann_json::nlohmann_json目标把它作为子目录引入或者直接target_link_libraries即可用 vcpkg 的机器一条vcpkg install nlohmann-json:x64-linux或对应平台三元组就能装好。不写构建脚本的话单头文件方案依然是最快的路。适合谁 / 不适合谁适合绝大多数需要读写 JSON 的应用——配置文件、HTTP 接口、日志、序列化存储。尤其是中小项目它把集成成本压到了接近零。不太适合对极限性能有苛刻要求的场景比如每毫秒要解析几 MB 数据、追求最低内存占用。这类场景下 RapidJSON 这类零拷贝库的常数因子更小。nlohmann/json 的定位是通用且省心不是最快选型时心里有数就好。上图为使用 nlohmann/json 的部分知名软件可见其生产环境覆盖面之广收个尾一句话总结它是 C 生态里上手最快、文档最全的 JSON 方案之一功能面也足够宽从个人脚本到大型项目都能用。想深入的话建议从官方文档站翻一翻 docs/mkdocs/docs/ 下的示例章节里面有按 API 逐个组织的可运行用例比看博客高效得多。遇到具体行为上的疑问社区的 issue 区通常能找到先例。【免费下载链接】jsonJSON for Modern C项目地址: https://gitcode.com/GitHub_Trending/js/json创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考