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

c++怎么解析一个简单的JSON字符串_c++ JSON解析方法

冰火之心
发布: 2025-10-04 09:36:02
原创
789人浏览过
使用nlohmann/json库解析JSON字符串,只需包含json.hpp头文件并调用parse方法即可实现。

c++怎么解析一个简单的json字符串_c++ json解析方法

在C++中解析一个简单的JSON字符串,最常用的方法是使用第三方库。C++标准库本身不提供JSON解析功能,因此需要借助成熟的开源库来实现。以下是几种主流且易于使用的JSON解析方案。

使用nlohmann/json(推荐)

这是目前C++中最流行的JSON库之一,支持C++11及以上版本,头文件仅需一个,集成非常方便。

安装方法:

从GitHub下载或通过包管理器安装:

基本用法示例:

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

#include <iostream>
#include <string>
#include "json.hpp"

// 使用命名空间
using json = nlohmann::json;

int main() {
    std::string json_str = R"({"name": "Tom", "age": 25, "city": "Beijing"})";

    try {
        json j = json::parse(json_str);

        std::cout << "Name: " << j["name"] << std::endl;
        std::cout << "Age: " << j["age"] << std::endl;
        std::cout << "City: " << j["city"] << std::endl;
    } catch (const std::exception& e) {
        std::cerr << "JSON解析失败: " << e.what() << std::endl;
    }

    return 0;
}
登录后复制

该库支持自动类型推导,例如:

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
  • j["name"].get<std::string>()
  • j["age"].get<int>()

使用RapidJSON

RapidJSON是一个高性能的C++ JSON库,由腾讯开发,适合对性能要求较高的场景。

特点:

  • 无依赖、仅头文件
  • 支持SAX和DOM两种解析方式
  • 内存占用低,速度快

示例代码(DOM方式):

#include <iostream>
#include <string>
#include "rapidjson/document.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"

using namespace rapidjson;

int main() {
    std::string json_str = R"({"name": "Jerry", "age": 30})";

    Document doc;
    doc.Parse(json_str.c_str());

    if (doc.HasParseError()) {
        std::cerr << "JSON解析出错" << std::endl;
        return -1;
    }

    if (doc.HasMember("name") && doc["name"].IsString()) {
        std::cout << "Name: " << doc["name"].GetString() << std::endl;
    }

    if (doc.HasMember("age") && doc["age"].IsInt()) {
        std::cout << "Age: " << doc["age"].GetInt() << std::endl;
    }

    return 0;
}
登录后复制

使用JsonCpp

JsonCpp是较早出现的C++ JSON库,接口清晰,适合初学者。

安装方法:

示例代码:

#include <iostream>
#include <string>
#include <json/json.h>

int main() {
    std::string json_str = R"({"title": "Engineer", "salary": 15000})";

    Json::Value root;
    Json::CharReaderBuilder builder;
    std::string errs;

    std::istringstream ss(json_str);
    if (!parseFromStream(builder, ss, &root, &errs)) {
        std::cerr << "解析失败: " << errs << std::endl;
        return -1;
    }

    std::cout << "Title: " << root["title"].asString() << std::endl;
    std::cout << "Salary: " << root["salary"].asInt() << std::endl;

    return 0;
}
登录后复制

选择建议

  • 新手或快速开发:推荐使用 nlohmann/json,语法简洁,像原生C++一样自然。
  • 高性能需求:考虑 RapidJSON,特别适合游戏、服务器等场景。
  • 已有项目使用JsonCpp:可继续沿用,但新项目建议优先选前两者。

基本上就这些。只要引入合适的库,C++解析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号