当前位置:   article > 正文

数据交换好帮手 —— JSON介绍_大数据传递用json还是数据库

大数据传递用json还是数据库

前言

后面进行的一个项目需要JSON,用在网络通信中传递数据

JSON介绍

Json是一种轻量级的数据交换格式(也叫数据序列化方式)。Json采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 Json 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

优秀的第三方库

JSON for Modern C++ 是一个由德国大牛 nlohmann 编写的在 C++ 下使用的 JSON 库。
具有以下特点

  1. 直观的语法整个代码由一个头文件组成 json.hpp,没有子项目,没有依赖关系,没有复杂的构建系统,使用起来非常方便
  2. 使用 C++ 11 标准编写
  3. 使用 json 像使用 STL 容器一样,STL 和 json 容器之间可以相互转换

JSON头文件

#include "json.hpp" 
using json = nlohmann::json;
  • 1
  • 2

Json数据序列化

就是把我们想要打包的数据,或者对象,直接处理成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;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

上面js对象的序列化结果是:

{"id":[1,2,3,4,5],msg":{"liu shuo":"hello china","zhang san":"hello world"},"name":"zhang
san"}
  • 1
  • 2

JSON数据反序列化

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

string jsonstr = js.dump(); 
cout<<"jsonstr:"<<jsonstr<<endl; 

// 模拟从网络接收到json字符串,通过json::parse函数把json字符串专程json对象 
json js2 = json::parse(jsonstr);

// 直接取key-value 
string name = js2["name"];
cout << "name:" << name << endl;

// 直接反序列化vector容器
vector<int> v = js2["list"];
for(int val : v) 
{ 
	cout << val << " "; 
}
cout << endl;

// 直接反序列化map容器 
map<int, string> m2 = js2["path"];
for(auto p : m2) 
{ 
	cout << p.first << " " << p.second << endl;
}
cout << endl;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

引用文献

施磊.集群聊天服务器
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/689017
推荐阅读
相关标签
  

闽ICP备14008679号