网站建设分什么行业,网站目标规划,上海市建设工程咨询协会,网站转化率低的原因前言 在软件程序开发中#xff0c;数据的传输和存储是一项非常重要的任务。特别是在分布式系统中#xff0c;数据的序列化和反序列化是一项关键的技术#xff0c;以确保不同系统之间的数据交换的正确性和高效性。 JSON#xff08;JavaScript Object Notation#xff09;是…前言 在软件程序开发中数据的传输和存储是一项非常重要的任务。特别是在分布式系统中数据的序列化和反序列化是一项关键的技术以确保不同系统之间的数据交换的正确性和高效性。 JSONJavaScript Object Notation是一种轻量级的数据交换格式已经成为了广泛使用的数据序列化和反序列化的格式之一。在Java开发中也存在多种用于处理JSON的工具。 Json序列化与反序列化工具常用的有jackson、fastjson、Gson。其中fastjson性能最快但是处理复杂类型的会有bug。
Java JSON序列化工具比较 序列化工具优点缺点Gson简单易用性能较好不支持注解不支持Jdk8的新特性Jackson功能丰富性能较好配置较为复杂Fastjson性能极好安全性问题较多
1、使用Gson进行JSON序列化
1引入依赖
dependencygroupIdcom.google.code.gson/groupIdartifactIdgson/artifactIdversion2.10.1/version
/dependency2代码实现
Gson gson new Gson();//序列化
String userStr gson.toJson(user);//反序列化
User user gson.fromJson(userStr,User.class);//List序列化
ListUser list new ArrayList();
list.add(user1);
list.add(user2);
String listStr gson.toJson(list);//List反序列化
ListUser userList gson.fromJson(listStr, new TypeTokenListUser(){}.getType());
System.out.println(userList.get(0).getUserId());
2、使用Jackson进行JSON序列化
1引入依赖
!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind --
dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactIdversion2.15.2/version
/dependency!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations --
dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-annotations/artifactIdversion2.15.2/version
/dependency!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core --
dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-core/artifactIdversion2.15.2/version
/dependency2代码实现
ObjectMapper mapper new ObjectMapper();//序列化
String userStr mapper.writeValueAsString(user);//反序列化
User user mapper.readValue(userStr,User.class);//List序列化
ListUser userlist new ArrayList();
userlist.add(user1);
userlist.add(user2);
String listStr mapper.writeValueAsString(userlist);//List反序列化
ListUser userList mapper.readValue(listStr,new TypeReferenceListUser(){});
System.out.println(userList.get(0).getUserName());//Map序列化
MapString,User map new HashMap();
map.put(u1,user1);
map.put(u2,user2);
String mapStr mapper.writeValueAsString(map);//Map反序列化
MapString,User tmpMap mapper.readValue(mapStr, new TypeReferenceMapString,User() {});
System.out.println(tmpMap.get(u1).getUserId());
3、使用Fastjson进行JSON序列化
1引入依赖
!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --
dependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion2.0.35/version
/dependency2代码实现
//序列化
String userStr JSON.toJSONString(user);//反序列化
User userJSON.parseObject(userStr, User.class);//List序列化
ListUser list new ArrayList();
list.add(user1);
list.add(user2);
String listStr JSON.toJSONString(list);//List反序列化
ListUser userList JSON.parseArray(listStr, User.class);
System.out.println(userList.get(0).getUserId());//Map序列化
MapString,User map new HashMap();
map.put(u1,user1);
map.put(u2,user2);
String mapStr JSON.toJSONString(map);
//Map反序列化
MapString,User tmpMap JSON.parseObject(mapStr,new TypeReferenceMapString,User(){});
System.out.println(tmpMap.get(u1).getUserId());