使用nlohmann/json库解析JSON字符串,只需包含json.hpp头文件并调用parse方法即可实现。

在C++中解析一个简单的JSON字符串,最常用的方法是使用第三方库。C++标准库本身不提供JSON解析功能,因此需要借助成熟的开源库来实现。以下是几种主流且易于使用的JSON解析方案。
安装方法:
从GitHub下载或通过包管理器安装:
json.hpp 包含到项目中即可使用。基本用法示例:
立即学习“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;
}
该库支持自动类型推导,例如:
 
                        Easily find JSON paths within JSON objects using our intuitive Json Path Finder
 30
30
                             
                    j["name"].get<std::string>()j["age"].get<int>()特点:
示例代码(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;
}
安装方法:
sudo apt-get install libjsoncpp-dev
示例代码:
#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;
}
基本上就这些。只要引入合适的库,C++解析JSON并不复杂,关键是选对工具并处理好异常情况。
以上就是c++++怎么解析一个简单的JSON字符串_c++ JSON解析方法的详细内容,更多请关注php中文网其它相关文章!
 
                        
                        c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
 
                 
                                
                                 收藏
收藏
                                                                             
                                
                                 收藏
收藏
                                                                             
                                
                                 收藏
收藏
                                                                            Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号