JSON文件读写操作(C++)

版权声明:本文为博主原创文章,商业转载请联系作者获得授权,非商业转载请注明出处。 https://blog.csdn.net/liitdar/article/details/81672870

本文主要介绍使用 jsoncpp 库,编写C++语言的读写 JSON 文件的程序。

1 写入JSON文件

这里介绍一个示例程序,该程序将JSON字符串写入到JSON文件中。

示例代码(json_file_oper_write.cpp)如下:

#include <jsoncpp/json/json.h>
#include <fstream>

using namespace std;

int main()
{
    Json::Value root;

    // 组装json内容
    root["occupation"]  = "paladin";
    root["camp"]        = "alliance";
    root["role_id"]     = 1;

    // 将json内容(缩进格式)输出到文件
    Json::StyledWriter writer;
    ofstream os;
    os.open("test.json");
    os << writer.write(root);
    os.close();

    return 0;
}

编译并执行上述代码,可以在当前目录下看到创建的“test.json”文件,如下:

通过上述结果能够知道,我们成功地将JSON字符串写入到了“test.json”文件中了。

2 读取JSON文件

这里介绍一个示例程序,该程序会读取前面创建的“test.json”文件,并将该文件中的JSON内容解析出来。

示例代码(json_file_oper_read.cpp)如下:

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

using namespace std;

int main()
{
    // 以二进制形式读取json文件内容
    ifstream is("test.json", ios::binary);

    if (!is.is_open())
    {
        cout << "open json file failed." << endl;
        return -1;
    }
    
    Json::Reader reader;
    Json::Value root;

    int nRole = 0;
    string strOccupation;
    string strCamp;

    // 解析json内容
    if (reader.parse(is, root))
    {
        nRole = root["role_id"].asInt();
        strOccupation = root["occupation"].asString();
        strCamp = root["camp"].asString();
    }

    is.close();

    cout << "role_id is: " << nRole << endl;
    cout << "occupation is: " << strOccupation << endl;
    cout << "camp is: " << strCamp << endl;

    return 0;
}


编译并运行上述代码,结果如下:

通过上述运行结果能够看到,我们的代码成功地将“test.json”文件中的JSON内容解析出来了。

猜你喜欢

转载自blog.csdn.net/liitdar/article/details/81672870