nlohmann::json
std::string file_name = "file_name.json";
std::ifstream ifs(file_name, std::ios::in);
if( !ifs.good() )
{
std::cout << __FILE__ << __LINE__ << " error: file_name = " << file_name << std::endl;
return;
}
// 1 13ms
std::string content((std::istreambuf_iterator<char>(ifs)), std::istreambuf_iterator<char>());
ifs.close();
nlohmann::json configure = nlohmann::json::parse(content);
content.clear();
// common
d_is_a = configure["common"]["is_a"];
d_ca = configure["ca"].dump(); // "ca":{ a:1, b: false}
jsoncpp,json中可以有注释
std::string file_name = "file_name.json";
std::ifstream ifs(file_name, std::ios::in);
if( !ifs.good() )
{
std::cout << __FILE__ << __LINE__ << " error: file_name = " << file_name << std::endl;
return;
}
// 方式一:
Json::Value configure;
Json::CharReaderBuilder builder;
std::string errs;
if( !Json::parseFromStream(builder, ifs, &configure, &errs) )
{
std::cout << __FILE__ << __LINE__ << " error: file_name = " << file_name << std::endl;
return;
}
ifs.close();
// 方式二:
std::string content((std::istreambuf_iterator<char>(ifs)), std::istreambuf_iterator<char>());
ifs.close();
Json::Value configure;
Json::Reader reader;
if( !reader.parse(content, configure, false) )
{
std::cout << __FILE__ << __LINE__ << " error: configure = " << configure << std::endl;
return;
}
content.clear();
// 获取值
d_is_a = configure["common"]["is_a"].asBool();
d_ca = configure["ca"].toStyledString();
// 通过读到的json(configure) 写json文件
std::ofstream ofs(file_name, std::ios::out);
if( !ofs.good() )
{
std::cout << __FILE__ << __LINE__ << " error: file_name = " << file_name << std::endl;
return;
}
Json::StreamWriterBuilder builder;
builder["precision"] = 2; // double精度为2
ofs << Json::writeString(builder, configure);
ofs.close();