版权声明:本文为博主原创文章,商业转载请联系作者获得授权,非商业转载请注明出处。 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内容解析出来了。