反序列化异常问题

下面是一些复杂对象情况下一些总结:

l   当父类继承Serializable接口,所有子类都可以被序列化
l   子类实现了Serializable接口,父类没有,父类中的属性不能序列化(不报错,数据会丢失),但是子类中属性人能正确序列化
l   如果序列化的属性是对象,这个对象也必须实现Serializable接口,否则会报错
l   在反序列化时,如果对象的属性有修改或删减,修改的部分属性会丢失,但不会报错
l   在反序列化时,如果serialVersionUID被修改,那么反序列化时会失败
l   如果一个父类没有实现Serializable接口,他的内部类如果不是static的,即使实现了序列化接口,也会序列失败。因为非静态内部类会保存一个指向父类的类型this变量,而序列化类的所有属性必须实现序列化接口,所以要将内部类设置成静态类
l   List或者Map容器中包含的泛型类型也必须实现Serializable接口,否则也会报java.io.NotSerializableException
时间: 2024-07-31 05:30:22

反序列化异常问题的相关文章

fastJson反序列化异常,JSONException: expect ':' at 0, actual =

com.alibaba.fastjson.JSONException: expect ':' at 0, actual = at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:290) ~[fastjson-1.2.47.jar:na] at com.alibaba.fastjson.parser.deserializer.MapDeserializer.deserialze(Ma

hessian BigDecimal反序列化异常

用hessian时BigDecimal反序列化时有的版本报上述异常如hessian4.0.7,有的版本反序列化结果是0,原因是服务端和客户端没有加序列化和反序列化配置,在服务提供方jar包里加上hessian的配置就可以了,如下: deserializers文件内容: java.math.BigDecimal=com.caucho.hessian.io.BigDecimalDeserializer java.sql.Date=com.caucho.hessian.io.SqlDateDeseri

protostuff序列化/反序列化

Protostuff是基于Google protobuff技术的Java版本,直接使用原生的protobuff是需要数据结构的预编译过程,需要编写.proto格式的配置文件,再通过protobuff提供的工具翻译成目标语言代码,而Protostuff动态支持了protobuff的预编译的过程,可以直接使用普通java POJO进行序列化,简化编码. 经过实测序列化性能相对原生protpbuff没有影响. 由于Protostuff只支持Java实现,不过并未对序列化格式有做任何修改,所以Proto

JavaSE:异常总结(Exception)

整体结构:        java.lang.Throwable               java.lang.Error               java.lang.Exception                      java.lang.RuntimeException 编译时异常为受检异常(checked) 1.异常:程序在执行过程中发生的不正常情况,程序员可以捕获处理 错误:不期望被用户捕获的异常,如计算机硬件的损坏,内存溢出. 2.编译时异常:.java源文件在执行.ja

第四章 服务容错 - 引入hystrix

上一节,描述了服务发现.负载均衡以及服务之间的调用.到这里,加上第二节的服务注册,整个微服务的架构就已经搭建出来了,即功能性需求就完成了.从本节开始的记录其实全部都是非功能性需求. 一.集群容错 技术选型:hystrix.(就是上图中熔断器) 熔断的作用: 第一个作用: 假设有两台服务器server1(假设可以处理的请求阈值是1W请求)和server2,在server1上注册了三个服务service1.service2.service3,在server2上注册了一个服务service4,假设se

FlatBuffers vs Protocol Buffers

FlatBuffers去年发布,最近看了一下,与同是出自Google之手的Protocol Buffers非常类似.在官网上介绍,FlatBuffers(简称FB)主要针对game development和对性能有要求的应用.相对于Protocol Buffers(简称PB),FB不需要解析,只通过序列化后的二进制buffer即可完成数据访问. FB的主要特点有: 1)数据访问不需要解析 将数据序列化成二进制buffer,之后的数据访问直接读取这个buffer,所以读取的效率很高. 2)内存高效

2015年创业中遇到的技术问题:61-70

61.Redis的key要判断null的情况. 如果key为null,报错. public Boolean exists(String key) { if(StringUtils.isBlank(key)){ return false; } return loginRedisTemplate.hasKey(key); } 另外原因分析,看了错误信息,发现是 org.springframework.util.Assert.notNull. 猜测,用Spring Data和redis连接,Sprin

Git.Framework 框架随手记--IIS7运行序列化问题

客户反馈系统又登录不了,这是最近几次连续出现相同的问题,从日志反应情况来看: 日志级别:[info] 日志位置:Git.Framework.Resource.ResourceManager 日志时间:2014/12/3 9:08:30 日志内容:反序列化异常:Unable to generate a temporary class (result=1). error CS1567: Error generating Win32 resource: 另一个程序正在使用此文件,进程无法访问. 日志级

Memcached 类库 EnyimMemcached 下的JSON序列化和二进制序列化兼容

Jusfr 原创,转载请注明来自博客园,文章所用代码见于我的github . 本人在分布式的项目使用中 EnyimMemcached ,由于业务需求使用了其序列化扩展,这里作下记录. EnyimCaching 通过配置文件提供了扩展点,见github,序列化由 ITranscoder 接口定义,提供了 DefaultTranscoder 和 DataContractTranscoder 两个实现类,前者作为默认,后面以XML序列化的方式重写了前者的对象序列化方法. EnyimCaching 是很