首页 > 后端开发 > C++ > 正文

C++如何解析JSON_使用nlohmann/json库处理C++中的JSON数据

穿越時空
发布: 2025-12-18 15:05:37
原创
128人浏览过
nlohmann/json库通过单头文件实现C++中JSON的解析与生成,支持字符串解析、对象构建、数组嵌套及自定义类型序列化,语法简洁且功能完整,极大简化了数据交换与配置处理。

c++如何解析json_使用nlohmann/json库处理c++中的json数据

在C++中处理JSON数据一直是个挑战,因为语言标准库没有内置支持。但使用第三方库 nlohmann/json 可以让这个过程变得非常简单直观。这个单头文件库语法清晰、功能强大,广泛用于现代C++项目。

1. 引入nlohmann/json

这个库是header-only的,意味着你只需包含一个头文件即可使用。

获取方式:

在代码中引入:

立即学习C++免费学习笔记(深入)”;

#include <nlohmann/json.hpp>
using json = nlohmann::json;
登录后复制

2. 解析JSON字符串

从字符串创建JSON对象非常直接:

Copy Leaks
Copy Leaks

AI内容检测和分级,帮助创建和保护原创内容

Copy Leaks 126
查看详情 Copy Leaks
std::string str = R"({"name": "Alice", "age": 25, "city": "Beijing"})";
json j = json::parse(str);

// 访问数据
std::string name = j["name"];
int age = j["age"];
登录后复制

支持自动类型转换,也可用 at() 方法进行安全访问(越界会抛异常)。

3. 构建和输出JSON

你可以像使用普通变量一样构造JSON结构:

json j;
j["name"] = "Bob";
j["hobbies"] = {"reading", "coding"};
j["address"]["street"] = "Main St";

// 输出格式化字符串
std::cout << j.dump(2) << std::endl; // 参数2表示缩进空格数
登录后复制

4. 处理复杂结构:数组与嵌套对象

支持完整的JSON结构,包括数组和多层嵌套:

json users = json::array();
users.push_back({{"id", 1}, {"name", "Alice"}});
users.push_back({{"id", 2}, {"name", "Bob"}});

// 遍历
for (auto& user : users) {
    std::cout << user["name"] << std::endl;
}
登录后复制

5. 序列化自定义C++类

通过定义 to_jsonfrom_json 函数,实现类与JSON的转换:

struct Person {
    std::string name;
    int age;
};

void to_json(json& j, const Person& p) {
    j = json{{"name", p.name}, {"age", p.age}};
}

void from_json(const json& j, Person& p) {
    p.name = j.at("name");
    p.age = j.at("age");
}
登录后复制

之后就可以直接使用 json j = person_obj;person_obj = j.get<person>();</person>

基本上就这些。nlohmann/json让C++处理JSON像脚本语言一样自然,适合配置读取、网络接口数据交换等场景。

以上就是C++如何解析JSON_使用nlohmann/json库处理C++中的JSON数据的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号