Json:是一种数据交换格式,他源于JavaScript。它的格式很简单,对象是一个无序的'键/值'对集合,一个对象由{开始,}结束,每个键后面跟一个冒号;‘键/值'对之间用逗号分隔,并列数据的集合用中括号[]表示。
交换原理:
1.客户端将数据打包成Json对象
2.转成Json字符串之后发送给服务器端
3.服务器端收到Json字符串后需转化成Json对象
4.读取Json对象中数据内容
优点:
1.格式简单,易于读写,格式是压缩的,占用带宽小。
2.易于解析,简化了客户端和服务器端代码的开发量,容易维护
XML是可扩展性标记语言,是一种允许用户对自己的标记语言进行定义的语言。
XML底层原理:XML解析方法有两种,一种是DOM,采用的是树形结构方式访问XML文档,将文档转化为一个包含其内容的树,称为节点树,并可以对树进行遍历,使用DOM解析的时候需要处理整个XML文档,所以对内存和性能的要求比较高。
第二种是SAX解析,解析文档时可以触发一系列的事件,当发现给定的标签时,他可以激活一个回调方法, 告诉该方法指定的标签已经找到,对内存的要求比较低,因为他让开发人员自己来决定所要处理的标签
1.可读性方面:两者差不多
2.可扩展性方面:都具有良好扩展性
3.编码难度方面:Json更容易
4.解码难度:Json更容易
5.数据体积方面:Json更小
6.数据交互方面:Json更方便
7.数据描述方面:XML更好
8.传输速度方面:Json远远快于XML
Protobuf:将数据序列化成二进制来传输,所以比json,XML的占用体积和转化速度更快
定义一个proto文件,将所需数据成员定义在里面,用protobuf编译器编译成目标语言,得到.h和.cpp文件,将文件和其他目标文件一起编译。