Role.java
package org.example.testjedis;
public class Role {
private long rid;
private String name;
private int age;
private Data data;
public Role(long rid, String name, int age, Data data) {
this.rid = rid;
this.name = name;
this.age = age;
this.data = data;
}
@Override
public String toString() {
return "Role{" +
"rid=" + rid +
", name='" + name + '\'' +
", age=" + age +
", data=" + data +
'}';
}
public long getRid() {
return rid;
}
public void setRid(long rid) {
this.rid = rid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Data getData() {
return data;
}
public void setData(Data data) {
this.data = data;
}
}
Data.java
package org.example.testjedis;
public class Data {
private long rid1;
private String name1;
private int age1;
public Data(long rid1, String name1, int age1) {
this.rid1 = rid1;
this.name1 = name1;
this.age1 = age1;
}
@Override
public String toString() {
return "Data{" +
"rid1=" + rid1 +
", name1='" + name1 + '\'' +
", age1=" + age1 +
'}';
}
public long getRid1() {
return rid1;
}
public void setRid1(long rid1) {
this.rid1 = rid1;
}
public String getName1() {
return name1;
}
public void setName1(String name1) {
this.name1 = name1;
}
public int getAge1() {
return age1;
}
public void setAge1(int age1) {
this.age1 = age1;
}
}
RoleService.java
package org.example.testjedis;
import com.alibaba.fastjson.JSON;
import redis.clients.jedis.Jedis;
public class RoleService {
public static void addUser(Role role) {
try (
Jedis jedis = new Jedis();
) {
// 对象转string
String jo = JSON.toJSONString(role);
jedis.set("role_" + role.getRid(), jo);
}
}
public static Role getRole(long rid) {
try (
Jedis jedis = new Jedis();
) {
String s = jedis.get("role_" + rid);
// string转对象
Role role = JSON.parseObject(s, Role.class);
return role;
}
}
}
Main.java
package org.example.testjedis;
public class Main {
public static void main(String[] args) {
// 添加一个玩家信息
RoleService.addUser(new Role(1, "jianan", 28, new Data(222, "xx", 123)));
// 获取一个玩家信息
Role role = RoleService.getRole(1);
System.out.println(role);
}
}
/*
Role{rid=1, name='jianan', age=28, data=Data{rid1=222, name1='xx', age1=123}}
*/
===============
<!--fastjson-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>
<!--gson-->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.2.4</version>
</dependency>
<!--jackson-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.10.1</version>
</dependency>
package com.example.testsb.testJson;
import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.collect.Lists;
import com.google.common.reflect.TypeToken;
import com.google.gson.Gson;
import java.util.List;
import java.util.Map;
public class Main {
public static void main(String[] args) throws JsonProcessingException {
List<Student> list = Lists.newArrayList();
for (int i = 0; i < 10; i++) {
Info info = new Info();
info.setId(i);
info.setMap(Map.of(i + "", i));
Student student = new Student();
student.setName("Name_" + i);
student.setAge(i);
student.setList(Lists.newArrayList(info));
list.add(student);
}
int N = 1000000;
// fastjson
long startTime = System.currentTimeMillis();
for (int i = 0; i < N; i++) {
String s2 = JSON.toJSONString(list);
List<Student> student2 = JSON.parseArray(s2, Student.class);
// ystem.out.println(s2);
// System.out.println(student2);
}
System.out.println(System.currentTimeMillis() - startTime);
// jackson
ObjectMapper mapper = new ObjectMapper();
startTime = System.currentTimeMillis();
for (int i = 0; i < N; i++) {
String s3 = mapper.writeValueAsString(list);
List<Student> students3 = mapper.readValue(s3, new TypeReference<>() {});
// System.out.println(s3);
// System.out.println(students3);
}
System.out.println(System.currentTimeMillis() - startTime);
// gson
Gson gson = new Gson();
startTime = System.currentTimeMillis();
for (int i = 0; i < N; i++) {
String s = gson.toJson(list);
List<Student> list1 = gson.fromJson(s, new TypeToken<List<Student>>() {}.getType());
// System.out.println(s);
// System.out.println(list1);
}
System.out.println(System.currentTimeMillis() - startTime);
}
}
/*
7547
9537
15807
*/
总结:兼顾性能和稳定性,都是推荐jackson作为json的序列和反序列化。