序列化是将一个对象的状态信息转换为字节流的过程,而反序列化则是将这个字节流恢复成对象的过程,在Java中,序列化主要用于持久化存储和网络传输,SpringBoot提供了两种序列化方式:JDK自带的序列化和Jackson序列化。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:主机域名、网站空间、营销软件、网站建设、历城网站维护、网站推广。
1、JDK自带序列化
在SpringBoot项目中,默认使用的是JDK自带的序列化方式,无需额外配置,只需在需要序列化的类上添加@Serializable
注解即可。
import java.io.Serializable; public class User implements Serializable { private static final long serialVersionUID = 1L; private String name; private int age; }
2、Jackson序列化
如果需要使用Jackson序列化,首先需要在项目的pom.xml文件中添加Jackson依赖:
com.fasterxml.jackson.core jackson-databind
然后在SpringBoot配置类中添加@EnableWebMvc
注解,以启用Web MVC功能:
import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.EnableWebMvc; @Configuration @EnableWebMvc public class WebConfig { }
接下来,在需要使用Jackson序列化的类上添加@JsonSerialize
和@JsonDeserialize
注解:
import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ObjectMapper; public class User implements Serializable { private static final long serialVersionUID = 1L; private String name; private int age; // 其他属性和方法省略... }
创建一个自定义的ObjectMapper类,用于配置Jackson的序列化和反序列化规则:
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.fasterxml.jackson.databind.deser.std.StdDeserializer; import com.fasterxml.jackson.databind.util.StdDateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.TimeZone; public class CustomObjectMapper extends ObjectMapper { public CustomObjectMapper() { SimpleModule module = new SimpleModule(); module.addSerializer(Date.class, new ToStringSerializer(new SimpleDateFormat("yyyy-MM-dd"))); module.addDeserializer(Date.class, new StdDeserializer<>(Date.class) { @Override protected Date _deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException { return parseDate(p); } }); registerModule(module); configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); } }
然后在SpringBoot配置类中创建一个CustomObjectMapper的Bean:
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import com.fasterxml.jackson.databind.ObjectMapper; import java.text.SimpleDateFormat; import java.util.TimeZone; import java.util.Date; import java.util.List; import java.util.ArrayList; import java.util.Locale; import java.util.TimeZone; import java.util.concurrent.TimeUnit; import javax.servlet.http.HttpServletRequest; import org.springframework.beans importfactorybean; import orgswingwwe34534534534534534534534534534534534534534534534534534534534534534534534534534534534534567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234x+y=z"; // 将x替换为实际的时间格式,将y替换为实际的日期格式,将z替换为实际的时区名称,如果不需要特定的格式,可以使用默认格式。
文章名称:springboot序列化和反序列化怎么定义
当前网址:http://www.shufengxianlan.com/qtweb/news23/80923.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联