JAVA序列化与JSON数据之间的关系
创始人
2024-03-28 08:58:31
0

RPC、Http、TCP/IP、Socket之间的关系及定义

序列化

目的:
1、以某种存储形式使自定义对象持久化;
2、将对象从一个地方传递到另一个地方。
3、使程序更具维护性。

序列化:让其变成字符串等类型冻结
通俗讲,就是将代码数据冻结起来,打好包,使其不发生变化,数据持久化,所谓持久化,就是将代码数据以某种方式存储起来,常见的硬盘等,网络的传输过程也需要将数据序列化,写成字节流, 序列化:让其变成字符串等类型冻结

最常见举例:
JSON.stringify()将对象、数组转换成字符串    JSON.stristring(Object) 变成字符串

反序列化

反序列化:将字符串变为对象,然后拿到相关的方法和属性等变量数据。

最常见举例:
JSON.parse()【从一个字符串中解析出json对象】,就是以  key 和 value 形式出现
JSON.parse(Object)

序列化

是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。之后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。

字节流

字节流是由字节组成的,字符流是由字符组成的. Java里字符由两个字节组成.字节流是最基本的,所有的InputStream和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的encode来处理,也就是要进行字符集的转化。在从字节流转化为字符流时,实际上就是byte[]转化为String时,public String(byte bytes[], String charsetName)有一个关键的参数字符集编码,通常我们都省略了,那系统就用操作系统默认的long

序列化的实现方法

把一个Java对象写入到硬盘或者传输到网络上面的其它计算机,这时我们就需要自己去通过java把相应的对象写成转换成字节流。对于这种通用的操作,我们为什么不使用统一的格式呢?没错,这里就出现了java的序列化的概念。在Java的OutputStream类下面的子类ObjectOutputStream类就有对应的WriteObject(Object object) 其中要求对应的object实现了java的序列化的接口。
在使用tomcat开发JavaEE相关项目的时候,我们关闭tomcat后,相应的session中的对象就存储在了硬盘上,如果我们想要在tomcat重启的时能够从tomcat上面读取对应session中的内容,那么保存在session中的内容就必须实现相关的序列化操作,还有jdbc加载驱动用的就是反序列化,将字符串变为对象。

Java编程中的序列化

无序列化

类某些属性不需要序列化,序列化和反序列化实现了的对象序列化,但是可以发现,操作时是将整个对象的所有属性序列化,那么transient关键字可以将某些内容不需要保存,就可以通过transient关键字来定义:private transient String title;此时title属性无法被序列化

序列化操作

public class Book implements Serializable{//序列化类:java.ioObjectOutputStream讲对象变为指定的二进制数据private static final long serialVersionUID = 1L;private String title;private double price;public Book(String tit,double pri){this.title=tit;this.price=pri;}public String toString() {Map hashMap = new HashMap();hashMap.put("Computer base", "6.2");hashMap.put("Computer webpage",  "45.2");hashMap.put("Java", "105.2");hashMap.put("Andriod", "89.2");//第一种:使用keySet()方法遍历哈希表hashMap中的一些元素System.out.println("通过keySet()方法遍历key和value:");Set keys = hashMap.keySet();for (String key : keys) {String value= hashMap.get(key);System.out.println("BookName:"+ key + " ,BookPrice:" + value);}return "BookName:"+this.title+" ,BookPrice:"+this.price;}
}

反序列化操作

将二进制数据换回原对象,构造方法:ObjectInputStream(InputStream in),方法: Object readObject() 从 ObjectInputStream 读取对象

public class Serialization {public static File file = null;public static void main(String[] args) throws Exception, IOException {file = new File("serialize.doc");//序列化到指定的文本ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(file));oos.writeObject(new Book("Java Development",45.3));     oos.flush();oos.close();file = new File("serialize.doc");//反序列化到指定的文本ObjectInputStream ois=new ObjectInputStream(new FileInputStream(file));Object obj=ois.readObject();Book book=(Book) obj;System.out.println("\n By using the byte stream serialization operation, "+ "we can see the following information:\n"+book);ois.close();}}

工作中什么时候用到序列化了?

1.使用Spring注解@ResponseBody
2.使用JSON框架(jackson、Gson、fastjson)等给前端返回json数据。

JSON
我们在后端将需要返回的数据通过json处理成json字符串后转为二进制在网络中传输,浏览器会解析为json字符串,进而我们可以再通过json将json字符串转换为对象。
json 是种很简洁的协议,但可惜的是,它只能传递基本的数型(int,long,string等)但不能传递byte类型
JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。它和xml一样都是一种数据交换格式。

JSON的应用之一

将结果进行String 序列化传给前台或者远程发送

import com.alibaba.fastjson.JSONObject;
某个接口的实现方法内JSONObject jObject = new JSONObject();jObject.put("result", "fail");。。。。。。
return jObject.toJSONString();

JSON的应用之二

json.stringify()和json.parse()

相关内容

热门资讯

全省基层公共就业创业经办能力提...   本报讯 记者孙潇报道 日前,为期3天的全省基层公共就业创业经办能力提升培训在昆明启动。  此次培...
清明假期国铁昆明局预计发送旅客...   本报讯 记者王绍芬报道 4月3日,记者从中国铁路昆明局集团有限公司(以下简称“国铁昆明局”)获悉...
春景图里的“科技范” 转自:贵州日报 贵州日报天眼新闻记者 杨小友沃野逐春光,田畴织锦绣。清明前后,贵州广袤大地上,春耕生...
充分发挥科技领军企业龙头作用 “发挥科技领军企业龙头作用,加强企业主导的产学研深度融合,从制度上保障企业参与国家科技创新决策、承担...
深化中国与东盟国家经贸合作 东盟是中国周边外交的优先方向和高质量共建“一带一路”重点地区,2025年是中国—东盟自贸区成立15周...
打击违法开垦林地草地专项行动将... 转自:辽宁日报 本报讯 记者刘璐报道 近年来,受利益驱动,我省开垦林地、草地违法行为由零散型、小面积...
直男与暖男的区别,你get到了... 直男与暖男的区别,你get到了吗直男和暖男我觉得并没有多大的区别,如果非要说区别的话,直男说话更直接...
怎样让自己不那么在乎一些不是很... 怎样让自己不那么在乎一些不是很重要的事情?尽量往好的方面去想,要知道,生活中无关紧要的事太多,但是重...
希尔顿集团财务共享中心于南京正... 创新引领酒店业财务管理高质量发展上海2025年4月3日 /美通社/ -- 全球领先的酒店管理公司希尔...
感冒时运动,小心你的心脏哦   随着春天的到来,气温逐渐回升,运动爱好者纷纷摩拳擦掌,准备大展身手。小李是一名跑步爱好者,早上在...
色彩的对比关系. 色彩的对比关系.色彩的对比关系主要是指相邻的__________或者__________的色彩之间所...
男主傅擎夜 女主苏岚的小说叫什... 男主傅擎夜 女主苏岚的小说叫什么名字《重回十七岁》。《重回十七岁》的作者是秦久九,一共544章,状态...
猫和狗打架的时候,为什么大多数... 猫和狗打架的时候,为什么大多数都是猫厉害?因为猫打架的时候尾巴会竖起来,会把狗吓跑,而且猫爪比较有力...
月圆,饼圆,心愿圆圆;日圆,月... 月圆,饼圆,心愿圆圆;日圆,月圆,团团圆圆;官源,财源,左右逢源!人缘,福缘,缘缘不断!情愿,心愿(...
我最喜欢的主人公是灰姑娘,为什... 我最喜欢的主人公是灰姑娘,为什么?你喜欢淳朴善良的人因为她温柔、漂亮、善良,说明你喜欢那样的女孩子。...
有鱼的成语 有鱼的成语鱼肉百姓、放长线钓大鱼、水清无鱼、鲁鱼亥豕、鱼贯而行、雀马鱼龙、釜底游鱼、鱼沉雁渺、池鱼林...
IPO鹰眼预警|悍高集团上市触... Hehson财经上市公司研究院|财报鹰眼预警悍高集团股份有限公司(以下简称“悍高集团”)拟计划在深圳...
中西医“携手”寻找百姓健康更优... 转自:辽宁日报 本报讯 记者王敏娜报道 看病到底选中医还是西医?不少人可能有过这样的纠结。中西医“携...
抢生产拓市场 转自:贵州日报 本报讯(记者 莫宇)4月1日,贵州众联新能源科技有限公司生产车间一派繁忙景象,工人们...
南宁地铁延长运营时间方便市民出...   本报讯(记者杨玲 通讯员潘良健)记者从南宁轨道交通运营有限公司了解到,为满足广大市民乘客清明假期...