文章目录
qs序列化:是什么?为什么?怎么办?实例截图参考
一、(简单了解) · 三步解析
(what、why、how)
-
序列化是一种用来处理对象流的机制:
所谓对象流就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。
-
序列化是为了解决在对对象流进行读写操作时所引发的问题。
-
对象、文件、数据,有许多不同的格式,很难统一传输和保存
序列化以后就都是字节流了,无论原来是什么东西,都能变成一样的东西,就可以进行通用的格式传输或保存,传输结束以后,要再次使用,就进行反序列化还原,这样对象还是对象,文件还是文件
-
序列化的主要作用:
使数据被统一成统一个格式, 从而方便跨程序, 跨平台等使用. 但因为实体类通常都会考虑
WebService传输, 所以通常都声明可序列化以支持WebService… -
什么时候使用序列化:
- 对象序列化可以实现分布式对象。
主要应用例如:RMI要利用对象序列化运行远程主机上的服务,就像在本地机上运行对象时一样。 - java对象序列化不仅保留一个对象的数据,而且递归保存对象引用的每个对象的数据。可以将整个对象层次写入字节流中,可以保存在文件中或在网络连接上传递。利用对象序列化可以进行对象的"深复制",即复制对象本身及引用的对象本身。序列化一个对象可能得到整个对象序列。
-
序列化的实现:
将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流;
为什么一定要qs.stringify序列化?
- 我使用
Jquery的ajax的时候,就直接在data区域写入参对象就行啊
其实也不一定非要qs.stringify序列化:
- 如果入参的格式不是
js对象,而是就像我们写好的uid=cs11&pwd=123这样的字符串拼接格式,那么就不用再序列化操作。
主要缘故在于:
axios内部会自动对Object的入参进行转换,转换成json字符串,其实就是JSON.stringify的操作,同时,会指定Content-type为applicaltion/json。
后台是按照application/x-ww-form-urlencoder方式在接口中进行数据获取和处理的,这样的话,后台处理就会出问题。
同样的,如果后台的接口就是处理Content-Type=application/json类型的入参,那么根本就不用再使用qs序列化了,直接正常post即可。如果强制使用了,后台接口在处理的时候会获取失败。
区间内容节选自:@


5794






