JSON for Modern C++(nlohmann/json)是一个流行的 C++ JSON 库,由德国开发者nlohmann编写。这个库提供了简洁而灵活的 API,使得在C++中解析和生成JSON数据变得非常方便。
1.JSON简介
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,用于在不同系统之间传输和存储数据。它基于JavaScript语法,但已经成为一种独立于编程语言的通用格式。
以下是 JSON 文件的一些特点和常见用途:
-
易读性:JSON 使用人类可读的文本格式表示数据,易于阅读和理解。
-
轻量级:相比于 XML 等其他格式,JSON 是一种轻量级的数据格式,适合在网络传输和存储中使用。
-
数据结构:JSON 支持包括对象(object)、数组(array)、字符串(string)、数字(number)、布尔值(true/false)和 null 在内的多种数据类型。
-
常见用途:JSON 文件常用于 Web 开发中,作为前后端数据交换的标准格式。它也经常用于配置文件、日志记录等场景。
开源地址:
GitHub - nlohmann/json: JSON for Modern C++
2.使用方法
- 序列化
#include "json.hpp"
using json = nlohmann::json;#include <iostream>
#include <vector>
#include <map>
#include <string>
using namespace std;// json序列化示例1
void func1()
{json js;js["姓名"] = "afison";js["学号"] = 1222034907;js["性别"] = "男";string sendBuf = js.dump();cout << sendBuf.c_str() << endl;
}// json序列化示例2
void func2()
{json js;// 直接序列化一个vector容器vector<int> vec;vec.push_back(4);vec.push_back(5);vec.push_back(6);js["list"] = vec;// 直接序列化一个map容器map<int, string> m;m.insert({1, "小红"});m.insert({2, "小明"});m.insert({3, "小兰"});js["name"] = m;cout << js << endl;
}int main()
{func1();func2();return 0;
}
- 反序列化
int main()
{string recvBuf = func1();//数据的反序列化 json jsbuf = json::parse(recvBuf);//反序列化cout<<jsbuf["姓名"]<<endl;cout<<jsbuf["学号"]<<endl;cout<<jsbuf["性别"]<<endl;return 0;
}