jsoncpp 基本用法¶
项目地址:jsoncpp
JsonCpp是一个用C++编写的库,用于操作JSON数据。它支持JSON的序列化(将JSON对象转换为字符串)和反序列化(从字符串解析出JSON对象),并且可以保留注释,适合存储用户配置文件等。
基本用法¶
引入头文件¶
创建JSON对象¶
Json::Value root;
root["name"] = "ChatGPT";
root["age"] = 3;
root["skills"] = Json::arrayValue;
root["skills"].append("NLP");
root["skills"].append("Machine Learning");
解析JSON字符串¶
std::string jsonStr = "{\"name\": \"ChatGPT\", \"age\": 3}";
Json::CharReaderBuilder readerBuilder;
Json::Value root;
std::string errs;
std::istringstream s(jsonStr);
if (Json::parseFromStream(readerBuilder, s, &root, &errs)) {
// 解析成功
std::cout << root["name"].asString() << std::endl;
}
序列化JSON对象为字符串¶
Json::StreamWriterBuilder writerBuilder;
std::string output = Json::writeString(writerBuilder, root);
std::cout << output << std::endl;
进阶用法¶
读取文件中的JSON¶
写入JSON到文件¶
std::ofstream file("output.json");
Json::StreamWriterBuilder writerBuilder;
file << Json::writeString(writerBuilder, root);
访问数组元素¶
Json::Value skills = root["skills"];
for (const auto& skill : skills) {
std::cout << skill.asString() << std::endl;
}
其他信息¶
- 支持多平台和多编译器
- 提供Amalgamated源代码,方便集成
- 详细文档和示例请参考官方文档