【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
前面我们说过,ini文件是用来进行配置的,数据库是用来进行数据存储的。那json是用来做什么的呢,json一般是用来做数据存储的。它处理的数据量没有数据库那么多,但是比ini要多很多。大家如果熟悉qt下面的ui文件,那么json的用法其实和ui的xml有点类似。如果我们在数据传输的时候没有太多讲究的话,那么就可以把json数据dump一下,传输出去。
目前有很多的库可以处理json数据,boost库里面就有现成的lib可以处理。
1、引入头文件
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>
using namespace boost::property_tree;
2、需要处理的json文件input.json
{
"name": "John",
"age" : 30,
"is_student" : false
}
3、处理json文件的读取和显示
ptree pt;
// 读取 JSON 数据
read_json("input.json", pt);
// 获取数据
std::string name = pt.get<std::string>("name");
int age = pt.get<int>("age");
bool is_student = pt.get<bool>("is_student");
// 打印数据
std::cout<< "Name: " << name << std::endl;
std::cout << "Age: " << age << std::endl;
std::cout << "Is Student: " << std::boolalpha << is_student << std::endl;
4、json文件的修改和存储
// 修改数据
pt.put("age", age + 1);
// 写入 JSON 数据
write_json("output.json", pt);
5、json文件格式的应用场合
目前json文件主要在两个场景下面用的比较多。一个是数据保存的时候,这个时候一般保存成文件的格式。还有一个是网络传输的时候,这种情况下,一般json都会被dump成string传输出去。收到json文件的一方,也会将字符串恢复成json文件的格式。这样发送和接收的双方就不用考虑数据大小端的问题了。当然,如果考虑到保密的需求,可以约定一下加解密的方法。