c++库:jsoncpp

半腔热情 提交于 2020-01-11 06:40:41

安装

https://github.com/open-source-parsers/jsoncpp
1. sudo apt-get -y install libjsoncpp-dev scons
2. tar zxvf jsoncpp-0.10.7.tar.gz
3. cd jsoncpp-0.10.7
4. scons platform=linux-gcc
5. sudo cp ./libs/linux-gcc-5.4.0/libjson_linux-gcc-5.4.0_libmt.* /usr/local/lib/ -a

生成json或解析json

1. Json::Value 只能处理 ANSI 类型的字符串
2. Json::Value是一种很重要的类型,可以代表任意类型int, string, object, array
3. 通过key访问节点
4. 是否存在节点:isNull()
5. 删除子对象:removeMember("key")
6. 反序列化json:parse()
7. 序列化json:toStyledString()

示例

/**

  • @description: 解析json字符串
  • @param {type}
  • @return:
    */
    int parse(string jsonStr) {
    Json::Value root;
    Json::Reader reader;
    if(reader.parse(posenetResult, root)) {
    // 元素
    string name = root[“age”].asString();
    int age = root[“age”].asInt();
    // 数组
    for(auto i : root[“array”]) { // root[“array”].size()
    int v = i.asInt();
    }
    return 0;
    }
    return -1;
    }

/**

  • @description: json字符串
  • @param {type}
  • @return:
    */
    int create() {
    Json::Value root;
    root[“a”].append(1);
    Json::Value arrayObj; // 构建对象
    arrayObj.append(1); // 插入数组成员
    arrayObj.append(2);
    root[“array”].append(arrayObj);
    string str = root.toStyledString();
    }

json文件

1. 读取json文件
std::ifstream is;  

is.open (filename, std::ios::binary );
if (reader.parse(is, root)) {
}
2. 写入json文件
Json::FastWriter writer;
std::string strWrite = writer.write(root);
std::ofstream ofs;
ofs.open(“test_write.json”);
ofs << strWrite;
ofs.close();

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!