菜鸟笔记
提升您的技术认知

c++库——jsoncpp使用详解

  • 关于jsoncpp如何编译的介绍,请移步c++库——jsoncpp编译安装。

本文介绍jsoncpp库如何读取或写入json信息。

jsoncpp写json文件

    Json::FastWriter jsonWrite;
    Json::Value value;
    value["test"] = 1;
    value["test2"] = "2"; //写入普通数据

	/ * 写入数组数据*/
    Json::Value valueArray; 
    Json::String atest= "atset";
    double  dtest= 123.2;
    valueArray.append(atest);
    valueArray.append(dtest);
    value["array"] = valueArray;

    Json::String str = jsonWrite.write(value);
    std::cout.flush();
	//value.toStyledString()可以格式化JSON文件
	//可以将Json::Value转换为字符串。其中FastWriter结果是无格式的字符串,而StyleWriter是格式化的字符串。

jsoncpp读取json文件

{
  
    "test":45,
    "array":[1,2,3],
    "string":"test"
}

打开当前目录下的JSON文件,如下代码:

    Json::Reader jsonReader;
    Json::Value jsonValue;
    std::ifstream jsonFile("./test.json");
   // jsonFile.open("./test.json",std::ios_base::out);
    if(!jsonReader.parse(jsonFile,jsonValue,true))
    {
  
        std::cout << "read error" << std::endl;
        return ;
    }
	//jsonFile.close();
    Json::Value test = jsonValue["test"];
    std:: cout <<test << std::endl;
    double number = test.asDouble(); //将value转换为double
    
	//数组的读取
    Json::Value arrayValue = jsonValue["array"];
    std:: cout <<arrayValue << std::endl;
    int size = arrayValue.size();
    for(int i(0);i<size;i++)
    {
  
        std::cout << arrayValue[i] <<  std::endl;
    }
    /*
     * Json::Value转string    String asString() const; 
     * Json::Value转double   double asDouble() const;
     * Json::Value转bool   bool asBool() const;
     * Json::Value转int  Int asInt() const;
     * .....
     * /

更多详细资料可以查看jsoncpp的官方文档。