java序列化与反序列化操作redis
笔者在使用SSM框架项目部分功能进行测试需要使用到对象的序列化与反序列化
第一种方式:jackson
Demo
package com.dznfit.service; import com.dznfit.controller.LoginController;
import com.dznfit.entity.User;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import javaConfiguration.RootConfig;
import javaConfiguration.WebConfig;
import org.apache.log4j.Logger;
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import the_mass.redis.SerializeUtil; import java.io.IOException;
import java.util.ArrayList; public class UserServiceImplTest {
private static Logger logger = Logger.getLogger(UserServiceImplTest.class); @Test
public void login() throws IOException {
User user = new User(1, "dz", "123", 1);
//放入容器
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext(RootConfig.class);
//得到bean
UserServiceImpl bean = context.getBean(UserServiceImpl.class);
/**
* ObjectMapper是JSON操作的核心,Jackson的所有JSON操作都是在ObjectMapper中实现。
*/
ObjectMapper mapper = new ObjectMapper(); System.out.println("类名" + bean.login((user)).getClass().getName());
String s = mapper.writeValueAsString(bean.login(user)); System.out.println("序列化:" + s); System.out.println("反序列化:" + mapper.readValue(s, User.class));
}
}
结果:

我们可以看到jackson实现类
ObjectMapper有许多方法
序列化时给个Object对象就可以了转成json字符串
反序列化也是有很多

第二种使用java自带序列化
需要在实体类实现 implements Serializable接口
@Test
public void Serialization() throws IOException, ClassNotFoundException {
Jedis jedis = new Jedis(); //java原生序列化
ByteArrayOutputStream stream = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(stream);
oos.writeObject(new News(1, "sdj", "merry christmas"));
oos.writeObject(new News(2, "zdm", "mashangyaoofangjiale")); jedis.set("news-01".getBytes(), stream.toByteArray());
oos.close();
System.out.println("---------"); System.out.println(jedis.get("news-01").getBytes().length);
System.out.println(jedis.get("news-01".getBytes()).length);
//反序列化
//这里有一个坑在调用jedis.get("news-01").getBytes() --error
// 这样调用的话会改变字节码取的时候就不对了
//存jedis.set("news-01".getBytes())取所有也是jedis.get("news-01".getBytes());
ByteArrayInputStream bri = new ByteArrayInputStream(jedis.get("news-01".getBytes()));
ObjectInputStream outs = new ObjectInputStream(bri);
Object o = outs.readObject();
Object o1 = outs.readObject();
System.out.println(o);
System.out.println(o1);
outs.close();
}
结果

java序列化与反序列化操作redis的更多相关文章
- java对象序列化和反序列化,redis存入和获取对象
最近使用redis发现直接存储序列化后的对象更方便,现提供java序列化和反序列化的代码 1.序列化代码: public static byte[] serialize(Object object) ...
- java浅克隆和深克隆,序列化和反序列化实现深克隆(封装序列化和反序列化操作)
本篇博客内容: 一.浅克隆(ShallowClone)和深克隆(DeepClone) 二.序列化和反序列化实现深克隆 三.封装序列化和反序列化操作 ObjectOutputStream + 内存流By ...
- Java基础(五)-Java序列化与反序列化
.output_wrapper pre code { font-family: Consolas, Inconsolata, Courier, monospace; display: block !i ...
- Java序列化和反序列化,你该知道得更多
序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程.在序列化期间,对象将其当前状态写入到临时或持久性存储区.以后,可以通过从存储区中读取或反序列化对象的状态,重新 ...
- java序列化和反序列化中的serialVersionUID有啥用
1.什么是序列化和反序列化 序列化就是将java对象转成字节序列的过程:反序列化就是将字节序列转成java对象的过程. java中,序列化的目的一种是需要将对象保存到硬盘上,一种是对象需要在网络中传 ...
- (记录)Jedis存放对象和读取对象--Java序列化与反序列化
一.理论分析 在学习Redis中的Jedis这一部分的时候,要使用到Protostuff(Protobuf的Java客户端)这一序列化工具.一开始看到序列化这些字眼的时候,感觉到一头雾水.于是,参考了 ...
- Java 序列化和反序列化(三)Serializable 源码分析 - 2
目录 Java 序列化和反序列化(三)Serializable 源码分析 - 2 1. ObjectStreamField 1.1 数据结构 1.2 构造函数 2. ObjectStreamClass ...
- Java 序列化和反序列化(二)Serializable 源码分析 - 1
目录 Java 序列化和反序列化(二)Serializable 源码分析 - 1 1. Java 序列化接口 2. ObjectOutputStream 源码分析 2.1 ObjectOutputSt ...
- Java序列化与反序列化
Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列 ...
随机推荐
- java——java跨平台原理
不同操作系统不同的虚拟机,屏蔽不同系统指令集的差异. 开发程序只需要遵循java规范:
- MongoDB安全运维
0×00 MongoDB权限介绍 1.MongoDB安装时不添加任何参数,默认是没有权限验证的,登录的用户可以对数据库任意操作而且可以远程访问数据库,需以–auth参数启动. 2.在刚安装完毕的时候M ...
- Java&Selenium自动化测试之数据驱动
一.摘要 本片博文以四个方式展示自动化测试的数据驱动,数组.CSV.Excel.Mysql 二.TestNG&Csv&Driven package testNGWithDataDriv ...
- 从程序员之死看 IT 人士如何摆脱低情商诅咒
(1) IT公司的创业者苏享茂忽然跳楼自杀了,自杀前,他留下几万字的文字记录.遗书,并且在自己开发的软件界面上,设置了弹出页面,控诉是恶毒前妻逼死了自己. 生命戛然而止,留给亲人痛苦,留给世人震惊. ...
- C# Tcp和Socket 网络(五)
TcpReceive public Form1() { InitializeComponent(); new Thread(() => { IPAddress ip = IPAddress.Pa ...
- Java中的集合HashSet、LinkedHashSet、TreeSet和EnumSet(二)
Set接口 前面已经简绍过Set集合,它类似于一个罐子,一旦把对象'丢进'Set集合,集合里多个对象之间没有明显的顺序.Set集合于Collection基本上完全一样,它没有提供任何额外的方法. Se ...
- BZOJ 3439: Kpm的MC密码 (trie+dfs序主席树)
题意 略 分析 把串倒过来插进trietrietrie上, 那么一个串的kpmkpmkpm串就是这个串在trietrietrie上对应的结点的子树下面的所有字符串. 那么像 BZOJ 3551/354 ...
- 题解 [CF916E] Jamie and Tree
题面 解析 这题考试时刚了四个小时. 结果还是爆零了 主要就是因为\(lca\)找伪了. 我们先考虑没有操作1,那就是裸的线段树. 在换了根以后,主要就是\(lca\)不好找(分类讨论伪了). 我们将 ...
- [Python自学] day-17 (jQuery)
一.jQuery简介 参考文档链接:http://jquery.cuishifeng.cn/ jQuery是JS的一个类库,是对DOM.BOM等的封装,方便我们来查找和操作元素. jQuery分为1. ...
- 1 Java面向对象
0 工具 在分析面向对象时最好采用UML图进行分析设计 1 Java面向对象的特点 java采用面向对象的方法设计程序主要体现在:对象有属性和方法,事件的发生是对象间的信息交互产生的即程序中的get ...