栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > C/C++/C#

JSON for Modern C++

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JSON for Modern C++

文章目录
  • 序列化与反序列化工具
    • 选用原因:
    • JSON数据序列化
    • JSON数据反序列化


序列化与反序列化工具 选用原因:

JSON for Modern c++在一众c++ json库中算是好用的。

优点:
1.部署简单,单文件hpp,加入项目,include到文件即可。
2.语法清楚,json对象使用起来就如普通对象一般。
3.和stl完美结合,vector,list无需另外处理。

缺点:
1、内存设计冗余,例如int统一默认为int64;
2、执行速度不是特别快;

JSON数据序列化

1.普通数据序列化

json js; // 添加数组 
js["id"] = {1,2,3,4,5}; 
// 添加key-value 
js["name"] = "zhang san"; 
// 添加对象 
js["msg"]["zhang san"] = "hello world"; 
js["msg"]["liu shuo"] = "hello china"; 
// 上面等同于下面这句一次性添加数组对象 
js["msg"] = {{"zhang san", "hello world"}, {"liu shuo", "hello china"}}; 
cout << js << endl;
//输出结果{"id":[1,2,3,4,5],msg":{"liu shuo":"hello china","zhang san":"hello world"},"name":"zhang san"}

2.容器序列化

json js; 
// 直接序列化一个vector容器 
vector vec; 
vec.push_back(1); 
vec.push_back(2); 
vec.push_back(5); 
js["list"] = vec; 
// 直接序列化一个map容器 
map m; m.insert({1, "黄山"}); m.insert({2, "华山"}); m.insert({3, "泰山"}); js["path"] = m; cout< 

强大到直接把C++ STL中的容器内容可以直接序列化成Json字符串,上面代码打印如下:
{“list”:[1,2,5],“path”:[[1,“黄山”],[2,“华山”],[3,“泰山”]]}

JSON数据反序列化

当从网络接收到字符串为Json格式,可以用JSON for Modern C++ 直接反序列化取得数据或者直接反序列化出对象,甚至容器,强大无比!

string jsonstr = js.dump(); 
cout<<"jsonstr:"< v = js2["list"]; 
for(int val : v) { 
	cout << val << " "; 
}
cout << endl; 
// 直接反序列化map容器 
map m2 = js2["path"]; 
for(auto p : m2) { 
	cout << p.first << " " << p.second << endl; 
}
cout << endl;
转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1038778.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号