ProtoStuff 使用问题,加字段 无法反序列化

虽然网上说这个序列化工具ProtoStuff (http://www.protostuff.io/)有多么的快,多么牛,但是在我们公司使用的时候发现反序列化的问题:

1.例如一个User类 对象通过字节数组 序列化字节数组

2.问题出现了,当我对user对象加一个属性字段email,这时候发现使用之前老的序列化字节数组  反序列化   为null 报错

经过详细测试,重现了上面的问题,使用这个工具确实有 新增字段 序列化的问题

怎么解决上面的问题

使用java 原生的序列化 和 反序列化

java 原生序列化:

/**
	 * object转成byte[]数组
	 * @param obj
	 * @return
	 */
	public static byte[] getBytesFromObject(Object obj) {
		ByteArrayOutputStream bo = null;
		ObjectOutputStream oo = null;
		try {
			bo = new ByteArrayOutputStream();
			oo = new ObjectOutputStream(bo);

			oo.writeObject(obj);
			return bo.toByteArray();
		} catch (Exception e) {
			LOG.error("getBytesFromObject error: {}.", e);
			return null;
		} finally {
			if (bo != null) {
				try {
					bo.close();
				} catch (Exception e) {
				}
			}
			if (oo != null) {
				try {
					oo.close();
				} catch (Exception e) {
				}
			}
		}
	}

java 原生反列化:

	/**
	 * byte[]数组转成object
	 * @param objBytes
	 * @return
	 */
	public static Object getObjectFromBytes(byte[] objBytes) {
		if (objBytes == null || objBytes.length == 0) {
			return null;
		}
		ByteArrayInputStream bi = null;
		ObjectInputStream oi = null;
		try {
			bi = new ByteArrayInputStream(objBytes);
			oi = new ObjectInputStream(bi);

			return oi.readObject();
		} catch (Exception e) {
			LOG.error("getObjectFromBytes error: {}.", e);
			return null;
		} finally {
			if (oi != null) {
				try {
					oi.close();
				} catch (Exception e) {
				}
			}
			if (bi != null) {
				try {
					bi.close();
				} catch (Exception e) {
				}
			}
		}
	}

 

转载于:https://my.oschina.net/u/3507894/blog/1079120

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值