开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第33天,点击查看活动详情
1.新增vo包并且创建imoocker类
package com.imooc.springboot.study.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Imoocer {
private String name;
private int age;
private String address;
@JsonProperty("rt")
// @JsonFormat(pattern = "yyyy-mm-dd HH:mm:ss")
private Date registerTime;
}
代码说明:
- @Data:getter和setter方法
- @NoArgsConstructor:无参构造方法
- @AllArgsConstructor:
- @JsonProperty("rt"):字段取别名
- @JsonFormat(pattern = "yyyy-mm-dd HH:mm:ss"):设置时间格式
它是lombok中的注解,作用在类上; 使用后添加一个构造函数,该构造函数含有所有已声明字段属性参数 对应的 @NoArgsConstructor 是添加一个无参数的构造器,一般使用@Builder注解时同时会使用 @AllArgsConstructor和@NoArgsConstructor
Lombok 插件中的@Builer,可以放在类、构造函数或方法上,它可以帮我们快速实现一个builder模式,builder模式既解决了重叠构造器容易出错,也解决了Javabean的不一致问题
2.新增jacksonConfig配置类
package com.imooc.springboot.study.config;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.text.SimpleDateFormat;
@Configuration
public class JacksonConfig {
@Bean
public ObjectMapper getObjectMapper(){
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
mapper.setDateFormat(new SimpleDateFormat("yyyy-mm-dd HH:mm:ss"));
return mapper;
}
}
代码说明:
- @Configuration:声明为配置类
- mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL):非null的才返回
- mapper.setDateFormat(new SimpleDateFormat("yyyy-mm-dd HH:mm:ss")):设置日期格式
3.控制器引入ObjectMapper
@GetMapping("jackson")
public Imoocer jackson() throws Exception{
Imoocer imoocer = Imoocer.builder()
.name("xiaoming")
.age(100)
.registerTime(new Date())
.build();
String imoocJson = mapper.writeValueAsString(imoocer);
log.info("imooc json:{}",imoocJson);
return mapper.readValue(imoocJson,Imoocer.class);
}
代码说明:
- Imoocer imoocer = Imoocer.builder():设置Imoocer属性
- String imoocJson = mapper.writeValueAsString(imoocer):转换为json对象
- mapper.readValue(imoocJson,Imoocer.class):转换为Object
4.重启服务