当前位置: 首页 > news >正文

一种解决java fst序列化兼容性问题的方法

有时因为疏忽,后面对类增加了属性,或删除属性,导致旧的数据无法反序列化。
如何解决?这是一种解决java fst序列化兼容性问题的方法。

如图:User 类

package test;import lombok.Data;import java.io.Serializable;@Data
public class User implements Serializable {private String name;private Integer age;
}

对象序列化后,数据格式如下:
在这里插入图片描述
如果某种原因,添加了新到属性,忘记了加@Version(1) 版本号,如下:

package test;import lombok.Data;import java.io.Serializable;@Data
public class User implements Serializable {private String name;private Integer age;private Integer height;
}

旧的数据反序列化就会异常,如何解决?
首先序列化数据是按一定规则存放的,@Version高的在后面,Integer、Long、String等属性会按一定规则排序存放。一般先存放长度,然后是数据。
这里有个技巧:

(1)可创建一个新的类,类名长度和原来一样。如:Use2

package test;import lombok.Data;import java.io.Serializable;@Data
public class Use2 implements Serializable {private String name;private Integer age;
}

(2)把序列化到数据转成HexString,记作oldHex
(3)"User "也转成byte[]再换成HexString,,记作hex1
(4)"Use2 "也转成byte[]再换成HexString.,记作hex2
(5)newHex=oldHex.replace(hex1,hex2)
(6)对newHex转为byte[],然后反序列化,就得到Use2 类数据。通过字段赋值(或别的方式),就可以得到User类的数据。


http://www.dtcms.com/a/495593.html

相关文章:

  • ROS系统中常用的数据传输方式——参数
  • 网站移动端是什么问题吗移动商城积分兑换
  • 淘宝API数据采集的日志监控与异常报警
  • 熊猫(安卓):识字软件
  • 水题记录2.3
  • Google Landmarks Dataset v2 (GLDv2):500万地标图像的识别与检索基准​(数据集概览、下载与使用全流程​)
  • 在设置feign请求的请求头透传(Header Propagation)时获取不到当前服务请求头的信息
  • 服装网站设计网站强制分享链接怎么做的
  • DevExpress WPF中文教程:Data Grid - 如何使用虚拟源?(二)
  • WPF中的变换(Transform)功能详解
  • 北京做网站主机开通成功网站建设中
  • 工业显示器在微铣削机床中的应用
  • 合肥手机网站建设陕西网站建设平台
  • 东莞网站推广及优化平台营销策略
  • exp4j并发解决
  • 学习博弈本身过程脑是怎么看的?
  • 风险感知中枢:监测预警系统的架构与核心
  • 使用ROS2 + Qt编写一个简易计算器
  • 校园资料分享平台|基于SpringBoot和Vue的校园资料分享平台(源码+数据库+文档)
  • 企业花钱做的网站出现违禁词本地wordpress 手机浏览器
  • 网站建设最基础是什么广东网站建设服务商
  • 如何模仿一个网站云手机免费版无限挂机
  • Vue2 + Office Add-in关于用vue项目于加载项控制excel单元格内容(Demo版)
  • TS在Vue3中的使用实例集合
  • 储能技术适配绿电直连场景深度对比
  • React + Ant Design 日期选择器避免显示“Invalid Date“的解决方案
  • Vue 3 多实例 + 缓存复用:理念及实践
  • 手机网站自适应布局怎么做wordpress背景图片下载
  • Java基础——面向对象进阶复习知识点3
  • wordpress资讯站模板网站建设 智能建站