栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java序列化与反序列化

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java序列化与反序列化

Serializable byte[] - Java原生
// 序列化
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("template"));
oos.writeObject(user);
oos.close();
// 反序列化
File file = new File("template");
ObjectInputStream ois = new ObjectInputStream(newFileInputStream(file));
User user = (user)ois.readObject();
UID
  • 序列化和反序列化的安全校验
  • 如果UID不同,不能反序列化
Translent
  • 标识之后的字段不允许序列化和反序列化,字段会为空

  • // 但是可以通过writeObject和readObject重新实现字段

    private void writeObject(java.io.ObjectOutputStream s) throw IOException

    private void readObject(java.io.ObjectInputStram s)) throws IOException, ClassNotFoundException

序列化 xml - XStraem
XStream xStream = new XStream(new DomDriver());
// 序列化
xStream.toXML(obj);
// 反序列化
xStream.fromXML(string);
  • 方便阅读
  • 长度很大
  • writeObject和readObject无效
json - FastJson
// 序列化
JSON.toJSONString(obj);
// 反序列化
(User)JSON.parseObject(string, User.class)
  • writeObject和readObject无效
  • 可以不implement java.io.Serializable
byte[] - hessian
// 序列化
User user = new User().setName("jiangtao").setAge("19");
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
HessianOutput hessianOutput = new HessianOutput(outputStream);
hessianOutput.writeObject(user);
String data = outputStream.toString();
System.out.println(data);
// 放序列化
ByteArrayInputStream inputStream = new ByteArrayInputStream(data.getBytes());
HessianInput hessianInput = new HessianInput(inputStream);
System.out.println(hessianInput.readObject(User.class));
  • java原生的字节大小较大
protobuf
  • 有自己的编译器和语法

  • 生成一个带有序列化和反序列化的对象

  • 压缩解压

  • 不传属性,约定属性位置

  • ASCIII

  • Tag | [length] | value : tag为字段标识, 类型(当前字段编号<<3)

其它序列化方法: avro kyro …

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/322067.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号