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

c++怎么解析JSON数据_c++ JSON解析方法

裘德小鎮的故事
发布: 2025-10-04 19:54:02
原创
958人浏览过
推荐使用nlohmann/json解析C++ JSON数据,因其语法简洁且易于集成;也可根据需求选择RapidJSON(高性能)或JsonCpp(传统项目),三者均需引入第三方库并注意错误处理。

c++怎么解析json数据_c++ json解析方法

在C++中解析JSON数据,由于标准库不直接支持JSON,通常需要借助第三方库来实现。以下是几种常用且高效的C++ JSON解析方法,适合不同项目需求。

使用nlohmann/json(推荐)

nlohmann/json 是一个广泛使用的单头文件库,语法简洁,易于集成,非常适合现代C++项目。

使用步骤:

  • 从GitHub下载或通过包管理器安装(如vcpkg、conan)。
  • 包含头文件:#include <nlohmann/json.hpp>
  • 使用json::parse()解析字符串。

示例代码:

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

#include <iostream>
#include <nlohmann/json.hpp>
<p>using json = nlohmann::json;</p><p>int main() {
std::string data = R"({"name": "Alice", "age": 25, "city": "Beijing"})";
json j = json::parse(data);</p><pre class="brush:php;toolbar:false;"><pre class="brush:php;toolbar:false;">std::cout << "Name: " << j["name"] << "\n";
std::cout << "Age: " << j["age"] << "\n";
if (j.contains("city")) {
    std::cout << "City: " << j["city"] << "\n";
}
登录后复制

}

使用RapidJSON

RapidJSON腾讯开发的高性能C++ JSON库,支持SAX和DOM解析,内存占用低,适合对性能要求高的场景。

特点:

Find JSON Path Online
Find JSON Path Online

Easily find JSON paths within JSON objects using our intuitive Json Path Finder

Find JSON Path Online30
查看详情 Find JSON Path Online
  • 无需依赖,纯C++实现。
  • 支持流式解析,速度快。
  • 需手动处理类型检查。

示例代码:

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

#include <iostream>
#include "rapidjson/document.h"
#include "rapidjson/stringbuffer.h"
<p>using namespace rapidjson;</p><p>int main() {
const char* json_str = R"({"product": "laptop", "price": 5999})";
Document doc;
doc.Parse(json_str);</p><pre class="brush:php;toolbar:false;"><pre class="brush:php;toolbar:false;">if (doc.HasMember("product") && doc["product"].IsString()) {
    std::cout << "Product: " << doc["product"].GetString() << "\n";
}
if (doc.HasMember("price") && doc["price"].IsNumber()) {
    std::cout << "Price: " << doc["price"].GetInt() << "\n";
}
登录后复制

}

使用JsonCpp

JsonCpp 是较早流行的C++ JSON库,API清晰,适合传统项目。

使用方法:

  • 安装JsonCpp库(apt、brew或编译源码)。
  • 包含<json/json.h>
  • Json::Reader解析(旧版)或Json::CharReader(新版)。

示例代码:

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

#include <iostream>
#include <json/json.h>
#include <sstream>
<p>int main() {
std::string data = R"({"status": "ok", "count": 10})";
Json::Value root;
Json::CharReaderBuilder builder;
std::string errs;</p><pre class="brush:php;toolbar:false;"><pre class="brush:php;toolbar:false;">std::istringstream iss(data);
if (Json::parseFromStream(builder, iss, &root, &errs)) {
    std::cout << "Status: " << root["status"].asString() << "\n";
    std::cout << "Count: " << root["count"].asInt() << "\n";
} else {
    std::cout << "Parse error: " << errs << "\n";
}
登录后复制

}

基本上就这些。选择哪个库取决于项目需求:nlohmann/json适合现代C++开发,RapidJSON适合高性能场景,JsonCpp适合维护老项目。引入对应库后,解析JSON就是读取键值、判断类型、提取数据的过程,不复杂但容易忽略错误处理。

以上就是c++++怎么解析JSON数据_c++ JSON解析方法的详细内容,更多请关注php中文网其它相关文章!

c++速学教程(入门到精通)
c++速学教程(入门到精通)

c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

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

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