springboot序列化和反序列化怎么定义

什么是序列化和反序列化?

序列化是将一个对象的状态信息转换为字节流的过程,而反序列化则是将这个字节流恢复成对象的过程,在Java中,序列化主要用于持久化存储和网络传输,SpringBoot提供了两种序列化方式:JDK自带的序列化和Jackson序列化。

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:主机域名网站空间、营销软件、网站建设、历城网站维护、网站推广。

如何在SpringBoot中配置序列化和反序列化?

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.hantingmc.com/qtweb/news23/80923.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联