c++ 读写json
时间: 2024-07-16 09:01:08 浏览: 70
在C++中,读写JSON(JavaScript Object Notation)通常会使用第三方库,因为C++标准库本身并不直接支持JSON处理。这里推荐两个常用的库:
1. **RapidJSON**:这是一个快速、易用的C++ JSON解析器和生成器,它提供了API用于解析JSON字符串到C++对象(如map或vector),以及将C++对象转换为JSON字符串。
- 示例(读取):
```cpp
#include "rapidjson/document.h"
rapidjson::Document d;
std::ifstream ifs("data.json");
if (ifs && d.Parse<0>(ifs).ok()) {
// d是一个JsonDocument对象,你可以像操作C++ map一样访问数据
const auto& value = d["key"];
// 处理value...
}
```
- 示例(写入):
```cpp
rapidjson::Document d;
d.SetObject();
d.AddMember("name", "John Doe", d.GetAllocator());
rapidjson::StringBuffer buffer;
rapidjson::PrettyWriter<rapidjson::StringBuffer> writer(buffer);
d.Accept(writer);
std::ofstream ofs("output.json");
if (ofs) {
ofs << buffer.GetString();
}
```
2. **nlohmann/json**:这是一个简洁的JSON库,提供线程安全的API,并且易于理解和使用。
- 示例(读取):
```cpp
#include <nlohmann/json.hpp>
nlohmann::json j;
std::ifstream file("data.json");
file >> j; // 解析JSON
const auto& value = j["key"];
```
- 示例(写入):
```cpp
nlohmann::json j = {{"name", "John Doe"}};
std::ofstream file("output.json");
file << j.dump(4); // 4代表缩进的空格数
```
使用这些库之前,请确保已将它们添加到项目依赖中并按照库文档安装和配置。关于具体使用方法或遇到的问题,如有更多疑问,请提问:
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)