springboot LocalDateTime 序列化、反序列化全局配置

缺乏、安全感 2023-02-27 10:32 140阅读 0赞

springboot LocalDateTime 序列化、反序列化全局配置

LocalDateTime按照自定义的格式进行序列化、反序列化

#

***********************

示例

**************

pojo 层

Order

  1. @Data
  2. public class Order {
  3. private String orderId;
  4. @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  5. private LocalDateTime orderTime;
  6. private Double price;
  7. private Integer amount;
  8. }

**************

config 层

WebConfig

  1. @Configuration
  2. public class WebConfig {
  3. @Bean
  4. public ObjectMapper initObjectMapper(){
  5. ObjectMapper objectMapper=new ObjectMapper();
  6. JavaTimeModule javaTimeModule=new JavaTimeModule();
  7. javaTimeModule.addDeserializer(LocalDateTime.class,new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
  8. javaTimeModule.addSerializer(LocalDateTime.class,new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
  9. //localDateTime按照 "yyyy-MM-dd HH:mm:ss"的格式进行序列化、反序列化
  10. objectMapper.registerModule(javaTimeModule);
  11. return objectMapper;
  12. }
  13. }

**************

controller 层

HelloController

  1. @RestController
  2. public class HelloController {
  3. @RequestMapping("/hello")
  4. public LocalDateTime hello(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime localDateTime){
  5. System.out.println("hello ==> "+localDateTime);
  6. return localDateTime;
  7. }
  8. @RequestMapping("/hello2")
  9. public Order hello2(Order order){
  10. System.out.println("hello2 ==> "+order);
  11. return order;
  12. }
  13. @RequestMapping("/hello3")
  14. public Order hello3(@RequestBody Order order){
  15. System.out.println("hello3 ==> "+order);
  16. return order;
  17. }
  18. }

***********************

使用测试

*****************

/hello

localhost:8080/hello?localDateTime=2020-08-06 09:08:06

设置全局配置输出:2020-08-09 08:06:09

  1. #控制台输出
  2. hello ==> 2020-08-09T08:06:09

不设置全局配置输出:2020-08-09T08:06:09

*****************

/hello2

localhost:8080/hello2?orderId=1&orderTime=2020-08-06 08:06:09&price=2&amount=8

设置全局配置输出

  1. ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzMTYyNQ_size_16_color_FFFFFF_t_70][]
  2. #控制台输出
  3. hello2 ==> Order(orderId=1, orderTime=2020-08-06T08:06:09, price=2.0, amount=8)

不设置全局配置输出

  1. ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzMTYyNQ_size_16_color_FFFFFF_t_70 1][]

*****************

/hello3

localhost:8080/hello3,

header:Content-Type application/json

body:

  1. {
  2. "orderId": "2",
  3. "orderTime": "2020-08-09 08:06:09",
  4. "price": "2",
  5. "amount": "8"
  6. }

设置全局配置输出

  1. ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzMTYyNQ_size_16_color_FFFFFF_t_70 2][]
  2. #控制台输出
  3. hello3 ==> Order(orderId=1, orderTime=2020-08-09T08:06:09, price=2.0, amount=8)

不设置全局配置,无法反序列化,可在LocalDateTime加注解@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”)

  1. ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzMTYyNQ_size_16_color_FFFFFF_t_70 3][]

发表评论

表情:
评论列表 (有 0 条评论,140人围观)

还没有评论,来说两句吧...

相关阅读

    相关 序列序列

    序列化: 对象的序列化主要有两种用途:   1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;   2) 在网络上传送对象的字节序列。