<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
建立Course实体类
package com.wangpx.pojo;
import java.io.Serializable;
import java.util.Objects;
/**
* com.wangpx.pojo
*
* @author wangpx
* @date 2019-12-09 20:43
*/
public class Coures implements Serializable {
private Integer cid;
private String cname;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Coures coures = (Coures) o;
return Objects.equals(cid, coures.cid) &&
Objects.equals(cname, coures.cname);
}
@Override
public int hashCode() {
return Objects.hash(cid, cname);
}
@Override
public String
toString() {
return "Coures{" +
"cid=" + cid +
", cname='" + cname + '\'' +
'}';
}
public Integer getCid() {
return cid;
}
public void setCid(Integer cid) {
this.cid = cid;
}
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
public Coures() {
}
public Coures(Integer cid, String cname) {
this.cid = cid;
this.cname = cname;
}
}
建立User 实体类
package com.wangpx.pojo;
import java.io.Serializable;
import java.util.List;
import java.util.Objects;
/**
* com.wangpx.pojo
*
* @author wangpx
* @date 2019-12-09 20:42
*/
public class User implements Serializable {
private Integer uid;
private String uname;
private String fav;
private Integer age;
private List<Coures> coures;
@Override
public String toString() {
return "User{" +
"uid=" + uid +
", uname='" + uname + '\'' +
", fav='" + fav + '\'' +
", age=" + age +
", coures=" + coures +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
return Objects.equals(uid, user.uid) &&
Objects.equals(uname, user.uname) &&
Objects.equals(fav, user.fav) &&
Objects.equals(age, user.age) &&
Objects.equals(coures, user.coures);
}
@Override
public int hashCode() {
return Objects.hash(uid, uname, fav, age, coures);
}
public Integer getUid() {
return uid;
}
public void setUid(Integer uid) {
this.uid = uid;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getFav() {
return fav;
}
public void setFav(String fav) {
this.fav = fav;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public List<Coures> getCoures() {
return coures;
}
public void setCoures(List<Coures> coures) {
this.coures = coures;
}
public User() {
}
public User(Integer uid, String uname, String fav, Integer age, List<Coures> coures) {
this.uid = uid;
this.uname = uname;
this.fav = fav;
this.age = age;
this.coures = coures;
}
}
进行对象的保存和获取
package com.wangpx.fastJson;
import com.alibaba.fastjson.JSON;
import com.wangpx.pojo.Coures;
import com.wangpx.pojo.User;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import java.util.ArrayList;
/**
* com.wangpx.fastJson
*
* @author wangpx
* @date 2019-12-09 20:46
*/
public class TestFastJson {
/**
* java对象转换为json字符串
*/
@Test
public void objectToJson(){
//链接
Jedis jedis = new Jedis("192.168.100.136",6379);
//密码:
jedis.auth("961220");
//选择数据库
jedis.select(4);
//创建User对象
User user = new User();
user.setUid(1);
user.setUname("张无忌");
user.setAge(20);
user.setFav("泡妞,打架");
Coures coures = new Coures(1,"九阴真经");
ArrayList<Coures> list = new ArrayList<>();
list.add(coures);
user.setCoures(list);
//将User对象转换为json字符串
String s = JSON.toJSONString(user);
System.out.println("jsonStr="+s);
//将字符串保存到缓存库
jedis.set("User",s);
//获得保存的对象
String user1 = jedis.get("User");
System.out.println();
//将字符串解析为User对象
User user2 = JSON.parseObject(user1, User.class);
System.out.println(user2.getUid()+""+user2.getAge()+user2.getCoures()+user2.getUname()+user2.getFav());
}
}
BinaryUtils工具类
对象的序列化:将javabean对象转为二进制进行传输或者存储
对象的反序列化:将二进制还原为原始的javabean对象
package com.wangpx.util;
import java.io.*;
/**
* com.wangpx.util
*
* @author wangpx
* @date 2019-12-09 21:03
*/
public class BinaryUtil implements Serializable {
/**
* java对象 转换为byte[]
* @param obj
* @return
*/
public static byte[] objToByte(Object obj){
ByteArrayOutputStream out=null;
ObjectOutputStream oos=null;
try {
//创建ByteArrayOutputStream对象
out=new ByteArrayOutputStream();
//创建对象输出流
oos = new ObjectOutputStream(out);
//使用输出流,将对象进行输出,输出到
oos.writeObject(obj);
byte[] buf = out.toByteArray();
return buf;
} catch (Exception e) {
e.printStackTrace();
}finally {
try{
if(oos!=null){
oos.flush();
oos.close();
}
if(out!=null){
out.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
/**
* byte数组转化为javabean对象
* @param buf
* @param clz
* @param <T>
* @return
*/
public static <T> T byteToObj(byte[] buf,Class<T> clz){
ByteArrayInputStream bais=null;
ObjectInputStream ois=null;
try{
bais=new ByteArrayInputStream(buf);
ois=new ObjectInputStream(bais);
T t = (T) ois.readObject();
return t;
}catch (Exception e) {
e.printStackTrace();
}finally {
try{
if(ois!=null){
ois.close();
}
if(bais!=null){
bais.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
}
使用BinaryUtils工具类进行对对象的保存和获取
package com.wangpx.testByte;
import com.wangpx.pojo.Coures;
import com.wangpx.pojo.User;
import com.wangpx.util.BinaryUtil;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import java.util.ArrayList;
/**
* com.wangpx.testByte
*
* @author wangpx
* @date 2019-12-09 21:12
*/
public class TestToByte {
@Test
public void testToByte(){
//链接
Jedis jedis = new Jedis("192.168.100.136",6379);
//密码:
jedis.auth("961220");
//选择数据库
jedis.select(5);
//创建User对象
User user = new User();
user.setUid(1);
user.setUname("张无忌");
user.setAge(20);
user.setFav("泡妞,打架");
Coures coures = new Coures(1,"九阴真经");
ArrayList<Coures> list = new ArrayList<>();
list.add(coures);
user.setCoures(list);
//将User对象转换为byte[]数组
byte[] value = BinaryUtil.objToByte(user);
byte[] key = BinaryUtil.objToByte(user.getUid());
//存储
//jedis.set(key,value);
byte[] bytes = jedis.get(key);
System.out.println(bytes);
//进行反序列化
User user1 = BinaryUtil.byteToObj(bytes, User.class);
System.out.println(user1);
}
}