最近在编写项目时,用redis存储结果一直报转换异常

对此我有了以下思路
1.在mysql进行格式转换
2.在java先转换
3.存json之前就进行格式转换
但是以上方法都不行,因为数据需要的是date类型,如果走转换又过慢

有大佬提了一下使用序列化解决,我就尝试了一下,还真可以,以下是我编写思路
1.首先需要序列化的类继承Serializable接口

2.编写序列化工具类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| package com.tiantai.policy.utils;
import java.io.*;
public class SerializeUtil { public static byte[] serialize(Object object) {
ObjectOutputStream oos = null; ByteArrayOutputStream baos = null; byte[] bytes = null; try { baos = new ByteArrayOutputStream(); oos = new ObjectOutputStream(baos); oos.writeObject(object); bytes = baos.toByteArray(); } catch (Exception e) { System.err.println("序列化失败" + e.getMessage()); } return bytes; }
public static Object deserialize(byte[] bytes) throws IOException, ClassNotFoundException {
ByteArrayInputStream bais = null; ObjectInputStream ois = null; try { bais = new ByteArrayInputStream(bytes); ois = new ObjectInputStream(bais); } catch (Exception e) { System.err.println("反序列化失败" + e.getMessage()); } return ois.readObject(); } }
|
3.使用序列化存储
1 2 3 4
| HashMap<Integer , Object> objectObjectHashMap = new HashMap<>(); objectObjectHashMap.put(airChannelEnum.getType(), SerializeUtil.serialize(selectPage)); redisTemplate.opsForList().leftPush("error",gson.toJson(objectObjectHashMap));
|

4.反序列化读取

1
| Page deserialize = (Page)SerializeUtil.deserialize(entry.getValue());
|
第一个红框是我用gson进行json转换
第二个红框是序列化后强转为原对象