JsonCpp使用方法及示例
下载
使用静态库/动态库
linux:
mkdir build cd build cmake -DCMAKE_BUILD_TYPE=release -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=ON -DARCHIVE_INSTALL_DIR=. -G "Unix Makefiles" .. make
windows: 下载cmake 编译
使用源文件
在项目目录中直接执行
python amalgamate.py
会在dist目录下生成两个头文件和一个源文件json-forwards.h 、json.h和jsoncpp.cpp; 直接放到工程中其他代码一起编译即可。
demo
头文件
#include <iostream> #include "json/json.h" #include <fstream>
创建
保存
void MPT_test_saveJson(std::string file, std::string& jsonStr)
{
std::ofstream ofs;
ofs.open(file);
if (!ofs.is_open())
{
std::cout << "open json file failed." << std::endl;
return;
}
ofs << jsonStr;
ofs.close();
return;
}
读取
修改
void MPT_test_changeJson(std::string file) {
std::ifstream ifs;
ifs.open(file, std::ios::in);
if (!ifs.is_open())
{
std::cout << "open json file failed." << std::endl;
return;
}
Json::CharReaderBuilder reader;
Json::Value root;
JSONCPP_STRING errs;
bool res = Json::parseFromStream(reader, ifs, &root, &errs);
if (!res || !errs.empty())
{
std::cout << "parseJson error! " << errs << std::endl;
return;
}
root["Age"] = 30;
root["Name"] = "Liangbaikais liangbaikai";
root["fruit"][0] = "strawberry";
ifs.close();
std::ofstream os;
os.open(file, std::ios::out);
if (!os.is_open())
{
std::cout << "open json file failed." << std::endl;
return;
}
Json::StreamWriterBuilder builder;
std::unique_ptr<Json::StreamWriter> writer(builder.newStreamWriter());
writer->write(root, &os);
return;
}
main
int main()
{
std::string jsonStr = MPT_test_createJson();
MPT_test_saveJson("../json/json-none.json", jsonStr);
MPT_test_readJson("../json/json-none.json");
MPT_test_changeJson("../json/json-none.json");
return 0;
}
