nlohmann::json 使用
时间: 2025-01-16 19:36:40 浏览: 41
### C++ 中使用 `nlohmann` 解析 JSON
#### 创建和初始化 JSON 对象
为了创建并操作 JSON 数据,在程序中需引入头文件 `<nlohmann/json.hpp>` 并定义别名以便简化后续调用:
```cpp
#include <iostream>
#include <nlohmann/json.hpp>
// 定义json类型的别名为nlohmann::json,方便书写
using json = nlohmann::json;
```
此段代码使得可以更简洁地处理 JSON 数据结构[^2]。
#### 构建 JSON 对象
可以通过多种方式构建 JSON 对象,例如通过字典风格的方式直接赋值键值对来构造对象:
```cpp
int main() {
// 直接以花括号语法创建JSON对象
json j_object = R"({"name": "张三", "age": 30})"_json;
std::cout << "姓名:" << j_object["name"] << '\n';
std::cout << "年龄:" << j_object["age"] << "\n\n";
}
```
上述例子展示了如何利用原始字符串字面量快速生成 JSON 实体,并访问其中存储的信息[^3]。
#### 修改现有 JSON 结构中的数据项
除了读取外,还可以轻松修改已存在的 JSON 条目:
```cpp
j_object["age"] = 31; // 更新属性值
std::cout << "更新后的年龄:" << j_object["age"] << '\n';
// 添加新的字段到现有的JSON对象里
j_object["hobbies"] = {"阅读", "旅行"};
for (const auto& hobby : j_object["hobbies"]) {
std::cout << "- " << hobby << '\n';
}
// 插入嵌套的对象作为成员之一
j_object["address"] = {{"city", "北京"}, {"street", "天安门广场"}};
std::cout << "城市:" << j_object["address"]["city"] << ", 街道:"
<< j_object["address"]["street"] << '\n';
```
这段代码片段进一步扩展了之前创建的 JSON 对象,增加了更多层次的数据条目。
#### 将复杂数据序列化成 JSON 字符串表示形式
当准备好要发送或保存这些信息时,可将其转换回标准格式化的 JSON 文本输出:
```cpp
std::string serialized_json = j_object.dump(4); // dump函数用于将json转为字符串,参数指定缩进级别
std::cout << "最终形成的JSON:\n" << serialized_json << '\n';
```
这里演示了怎样把复杂的多级关联数组转化为易于传输的形式。
阅读全文
相关推荐
















