c++ 使用boost去读写json

这两天刚好写一个小玩具需要用到读写配置文件,趁机学习了c++的boost 读写库

{
"SERVER_REG":"/tmp/wangyishen_register",
"SERVER_LOG":"/tmp/wangyishen_login",
"SERVER_CHAT":"/tmp/wangyishen_sendmsg",
"MAX_CONNECT_NUM":"2"
}

对于上面一个位于/etc/erverConfig结构简单的json文件,读取的方式如下

#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>

...

boost::property_tree::ptree root;//创建一个结构对象    boost::property_tree::read_json<boost::property_tree::ptree>("/etc/serverConfig",root);//读文件存放到root中
char SERVER_REG[BUF_LEN];//创建变量
memset(SERVER_REG , 0, sizeof(SERVER_REG));
memcpy(SERVER_REG , root.get<string>("SERVER_REG").data(), strlen(root.get<string>("SERVER_REG").data()) * sizeof(root.get<string>("SERVER_REG").data()));//读取内容并保存到变量中

如果希望写数据进某个字符串中 可以使用如下方法

#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>
//将 key:value写进字符串others中
bool json_add(char* others,char* key,char* value){
    boost::property_tree::ptree root; //创建结构对象
    std::stringstream s (others);     
    try {
        read_json(s, root);          //读取
    }
    catch(std::exception & e){
        printf("cannot parse from string 'others' \n");
        return false;
    }

    root.put(key,value);            //将内容放入对象结构root中
    write_json(s, root,false);      //写回字符流对象
    memset(others, 0 ,BUF_LEN* sizeof(char));
    memcpy(others,s.str().data(), sizeof(char) * strlen(s.str().data())); //拷贝回去
    return true;
}

猜你喜欢

转载自blog.csdn.net/dddxxxx/article/details/87919202