序列化-反序列化--json-xml-protoBuf

序列化和反序列化

数据在网络中传输需要按照一定的规范组成。这些规定的规范有json,xml,protobuf。

序列化

也就是说数据需要通过网络传输时,需要把数据转化为需要的传输格式,所以需要把需要传输的数据生成json或者xml或者protobuf语言格式文件,才能传输。

反序列化

当数据传输完成时,又需要把格式文件转为原本或者我们需要(比如数据从lua解析出来,反序列化之后需要变为js数据)的数据。

JSON、XML 和 protobuf

JSON、XML 和 Protocol Buffers(protobuf)是三种常见的数据表现格式。它们的共同目的是在不同的应用程序和平台之间传输数据,而无需知道底层数据结构或编程语言细节。

以下是每种格式的简要描述:

  1. JSON(JavaScript Object Notation):是一种轻量级的数据交换格式。它是基于 JavaScript 对象语法,并以文本格式存储数据。JSON 是平台无关的,易于解析和生成,可被普遍支持。由于其简单、快速和安全,JSON 已成为 Web 开发中最流行的数据交换格式。

  2. XML(eXtensible Markup Language):与 JSON 类似,XML 也是一种可读性高,轻量级的数据交换格式。XML 是基于标签结构,并以文本格式存储数据。XML 具有严格的结构和丰富的元数据,可用于描述复杂的数据和多级场景,并具有广泛的应用。

  3. Protocol Buffers:是 Google 研发的一种高效的二进制数据交换格式。由于其高效的编解码和紧凑的数据表示,Protocol Buffers 已成为一种流行的网络通信协议和数据交换格式。 它是强类型的,并具有自描述、可扩展、跨平台和反向兼容等优点。

JSON

json教程

json语法:

一个{}就是一个json对象。

parse解析时,就会将解析出来的一个{}json对象赋值给一个js对象变量;

比如:

复制代码
//json对象
 { "name":"runoob", "alexa":10000, "site":null }

//js对象
var myObj;
myObj = { "name":"runoob", "alexa":10000, "site":null };

js对象和变量

复制代码
//将一个json字符串赋给一个js变量
var person = '{firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"}';

//建立一个对象
var person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};

json---parse

复制代码
var data='{ "name":"runoob", "alexa":10000, "site":"www.runoob.com" }';
var obj = JSON.parse(data);

/*
obj={ "name":"runoob", "alexa":10000, "site":"www.runoob.com" };
*/

箭头函数

链接

复制代码
function foo() {
	let bar = () => {
		console.log(arguments.length);
	}
	bar(); 
}
foo(5, 5, 5);  // 3


bar是函数对象,通过函数对象+()调用箭头函数。

js的函数对象就像c++的lambda表达式。

xml

json和xml比较

json---键值对;

xml---标签;

相关推荐
吃杠碰小鸡21 分钟前
VsCode中开发Java项目
java·vscode
宠友信息1 小时前
内容社区源码开发实践解析,用Spring Boot打造1:1仿小红书源码平台
java·spring boot·redis·websocket·mysql·spring·uni-app
行百里er1 小时前
加个依赖就生效?一行搞定 Spring Boot Starter 自动装配
java·后端·监控
月华路1 小时前
G1 新生代对象晋升老年代:实现机制与 GC 日志
java·jvm·算法
AI人工智能+电脑小能手2 小时前
大白话说Java设计模式-34-命令模式(业务实战篇)
java·spring·设计模式·命令模式·异步任务·撤销重做·事务封装
净重21克2 小时前
万字长文!TLS协议升级避坑手册:JDK老项目适配TLS1.2/1.3全流程拆解
java·springboot·java安全
一直C2 小时前
【数据结构】哈希表+算法复杂度与经典排序查找(C语言)
java·linux·开发语言·数据结构·算法·ubuntu·散列表
paopaokaka_luck2 小时前
基于springboot3+vue3的车间生产管理系统(Echarts图形化分析、BI报表)
java·前端·spring boot·学习·echarts
Zane19942 小时前
遍历时删元素为什么报错:modCount 这个"计数器"在背后盯着你
java·后端
电商API_180079052473 小时前
速卖通商品采集API技术文章
java·开发语言·c++·api·跨境电商·商品详情