C++Json文件的解析库rapidJson

rapidjson是一个高效的C++ JSON解析/生成器,具有小而全、快且独立等优点。

rapidjson书写Json文件

头文件

#include"rapidjson/stringbuffer.h"
#include"rapidjson/writer.h" 
#include"rapidjson/prettywriter.h" 		//可以自动换行   

将内容写入到json文件

std::string strJsonPath = " ";
//检查文件路径是否存在不存在自动创建该路径(使用Boost库)
boost::filesystem::path fileDir = strJsonPath;     //设置写入Json文件路径
if(!boost::filesystem::exists(fileDir.parent_path())
{
	boost::filesystem::create_directories(fileDir.parent_path());
}

rapidjson::StringBuffer strBuff;				//创建JsonBuffer
rapidjson::PrettyWriter<rapidjson::StringBuffer> writer(strBuff);

//{}大括号
writer.StartObject();
......
writer.EndObject();

//文本标签加内容
writer.Key("str_text");
writer.Int(i_);

writer.Key("str_text");
writer.Double(d_);

//[]中括号
writer.StartArray();
.......
writer.EndArray();

//保存Buffer里面的内容到Json文件
std::ofstream ofs;
ofs.open(strJsonPath,std::ios::out | std::ios::app);
std::string strBuffer = strBuff.GetString();
ofd << strBuffer;
ofs.close();

rapidjson读取json文件

#include <iostream>
#include <fstream>
#include "rapidjson/document.h"
#include "rapidjson/filereadstream.h"

using namespace rapidjson;
using namespace std;

int main() {
    // 1. 打开 JSON 文件
    ifstream ifs("example.json");

    if (!ifs.is_open()) {
        cerr << "Failed to open the file." << endl;
        return 1;
    }

    // 2. 将文件内容读入缓冲区
    string content((istreambuf_iterator<char>(ifs)), (istreambuf_iterator<char>()));

    // 3. 关闭文件流
    ifs.close();

    // 4. 解析 JSON
    Document document;
    document.Parse(content.c_str());

    if (document.HasParseError()) {
        cerr << "JSON parse error: " << GetParseError_En(document.GetParseError()) << endl;
        return 1;
    }

    // 5. 访问 JSON 数据
    if (document.IsObject()) {
        // 在此处进行 JSON 数据的访问和操作
        // 例如:
        if (document.HasMember("key")) {
            const Value& value = document["key"];
            if (value.IsString()) {
                cout << "Value of key: " << value.GetString() << endl;
            }
        }
    }

    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值