springboot实战(15)(注解@JsonFormat(pattern=“?“)、@JsonIgnore)

目录

一、请求映射路径相同,根据请求方式区分不同接口。

1、例子。

二、注解@JsonFormat。

1、基本介绍。

2、日期和时间格式化。

3、时区设置。

4、反序列化。

三、注解@JsonIgnore。

1、基本介绍。

2、主要作用。


一、请求映射路径相同,根据请求方式区分不同接口。
1、例子。
  • 新增文章分类接口与获取所有文章分类接口的请求路径映射相同。
  • 新增文章分类接口。(请求路径:/category,请求方式post)
  • 获取所有文章分类接口。(请求路径:/category,请求方式get)
java 复制代码
@RestController
@RequestMapping("/category")
public class CategoryController {
    //注入Service层实现类对象
    @Autowired
    private CategoryService categoryService;

    @PostMapping
    public Result add(@RequestBody @Validated Category category){
        //添加文章分类
        categoryService.add(category);
        return Result.success();
    }

    /**
     * 获取当前已登录用户创建的所有文章分类
     * @return list集合对象
     */
    @GetMapping
    public Result<List<Category>> list(){
        //调用service层
       List<Category> cs = categoryService.list();
       return Result.success(cs);
    }
二、注解@JsonFormat。
1、基本介绍。
  • @JsonFormat是一个在 Java 中用于格式化日期、时间等数据类型的注解,主要应用在 JSON 序列化和反序列化的场景中,帮助控制数据的输出格式和输入格式。这个注解通常和 JSON 处理库(如 Jackson)一起使用。

2、日期和时间格式化。
  • 当处理日期类型(如java.util.Date、java.time.LocalDateTime等)的属性时,@JsonFormat可以指定日期和时间的输出格式。例如,将日期格式化为yyyy - MM - dd HH:mm:ss的形式。

  • 下面举例两种情况。(使用与未使用)




3、时区设置。
  • 除了日期和时间格式,@JsonFormat还可以用于设置时区。在处理跨时区的日期和时间数据时,这一点非常重要。
java 复制代码
@JsonFormat(pattern = "yyyy - MM - dd HH:mm:ss", timezone = "GMT+8")
private Date eventTime;
  • 在序列化eventTime属性时,日期时间会按照东八区(GMT + 8)的时间进行格式化输出。

4、反序列化。
  • @JsonFormat不仅用于序列化,还可以在一定程度上影响反序列化。虽然它主要是对输出格式进行控制,但通过指定清晰的格式,也有助于在反序列化时正确解析日期和时间数据。
  • 例如,当接收一个 JSON 字符串并将其反序列化为Event类的对象时,如果 JSON 中的日期时间格式与@JsonFormat注解指定的格式匹配,那么就可以更准确地将日期时间数据转换为java.util.Date类型并赋值给eventTime属性。
三、注解@JsonIgnore。
1、基本介绍。
  • @JsonIgnore是在处理 JSON 数据序列化和反序列化时常用的注解,在 Java 的很多 JSON 处理库(如 Jackson)中被广泛应用。
  • 注解@JsonIgnore。

2、主要作用。
  • 在 JSON 序列化过程中,当一个类的某个属性被标注了@JsonIgnore注解时,该属性将不会被包含在最终生成的 JSON 数据中。这对于隐藏敏感信息或者避免不必要的数据传输非常有用。
  • 如springMVC把当前的user对象转换成json字符串的时候,忽略密码字段:password。最终的json字符串中就没有password这个属性了。

  • 注意这个注解导的包要是下面这个,不然不生效。
java 复制代码
import com.fasterxml.jackson.annotation.JsonIgnore;
  • 对应字段没加注解前@JsonIgnore。
  • 对应字段添加注解@JsonIgnore后。
  • 密码(password)添加注解@JsonIgnore。
  • 创建、更新时间(createTime、updateTime)添加注解@JsonFormat(pattern="?")。

  • Java对象序列化成JSON格式后:没有显示password。createTime、updateTime时间已格式化。
相关推荐
过客随尘5 小时前
Spring AOP以及事务详解(一)
spring boot·后端
老鼠只爱大米5 小时前
Java设计模式之外观模式(Facade)详解
java·设计模式·外观模式·facade·java设计模式
vx_dmxq2115 小时前
【微信小程序学习交流平台】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
java·spring boot·python·mysql·微信小程序·小程序·idea
武子康5 小时前
大数据-167 ELK Elastic Stack(ELK) 实战:架构要点、索引与排错清单
大数据·后端·elasticsearch
9号达人5 小时前
优惠系统演进:从"实时结算"到"所见即所得",前端传参真的鸡肋吗?
java·后端·面试
q***07145 小时前
Spring Boot 中使用 @Transactional 注解配置事务管理
数据库·spring boot·sql
wei_shuo5 小时前
openEuler 底座赋能:openGauss 数据库部署与性能实战评测
后端
用户4098170215105 小时前
Python 的基本类型
后端
AAA简单玩转程序设计5 小时前
Java进阶小妙招:ArrayList和LinkedList的"相爱相杀"
java
lkbhua莱克瓦245 小时前
集合进阶8——Stream流
java·开发语言·笔记·github·stream流·学习方法·集合