171207之java中的JSON序列化问题

来源:互联网 发布:合金装备 mac 汉化 编辑:程序博客网 时间:2024/06/10 20:36

注意:json和序列化没什么太大的关系。

问题:
第一,我们说的前后台用json传输,json不只是一种数据格式么,所以传输的时候就写成json格式,像form表单提交一样传输数据不就可以了?
答:form表单提交是同步提交。json主要用于ajax异步提交,json就是一种数据格式,跟xml格式是一样的,只是前台解析json格式比较方便而已

第二,什么叫转化为二进制,难道form表单的数据或者所有网络传输的数据不都是二进制010101么,那什么还要转二进制呢?
答:说的java序列化其实没有那么深奥,简单的讲,正常的字符是不能在网络间传输的,java对象或者数据要传输就需要做序列化处理。所以序列化只是为了能在网络上传输。

第三,我所理解的序列化就是把它像保存文件一样保存在内存或本地,传输json为何要先保存(序列化)在本地,再传输呢?
答:同二,要在网络上传输就需要做序列化处理。

第四,网络传输的数据不都是二进制010101么 ?
是的,不管是用json、xml、还是序列化成二进制,底层的网络传输都是一样的,所以你不用关注底层网络传输,我们关注的是应用层。

我理解的应用层的接口序列化有 :
1、json、xml序列化 这个是走http协议的
2、二进制序列化,比如hessian等等,这个是走tcp协议的

广义上来讲:json、xml、protobuf都属于序列化对象的方式,跨语言。
狭义的讲:Java的Serializable接口,只限Java程序。

案例:
你是完全可以往另一台机器发1001011010…..但是对方不知道怎么解析啊,八个一读16个一读谁知道啊。你这边是有源代码,有类型定义,你知道偏移量多少到多少的内存位置是一个int,另一段是个double,你是知道的(你不知道的话你的高级语言也能知道)。

好比你把jpg文件扩展名改成txt,数据内容根本没变,还是原来的东西,但是你一打开就乱码了。让对面机器知道你发的是个什么东西还是有必要的所以需要先弄成对面看得懂的样子,在搞一遍,发过去。