@JSONField @JsonFormat @JsonProperty 使用场景

@JSONField   是com.alibaba.fastjson.annotation包下的

主要作用是 json字符串 和 java对象的 序列化和反序列化 时字符串字段和java字段不一致时  在java字段注解别名  和字符串一致

例如

@JSONField(name = "t1")
private String name;

序列化后为: {"t1":"value"}

或者使用

@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date time;

来控制序列化时的 时间格式

{"time":"2022-02-23 14:23:43"}

 

@JsonFormat 是com.fasterxml.jackson.annotation包下的

主要作用是格式化对象时间字段到前端展示  用法:

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date date;

controller方法 使用@ResponseBody 返回对象时,时间字段会按照你设置的 pattern来显示

 

@JsonProperty 也是com.fasterxml.jackson.annotation 包下的

主要作用当使用@RequestBody 接收body对象参数时  映射前端传入的json字符串的字段 和java字段,

例如你对接了一个外部接口, 他们传入的参数 为: {s_name:"123"}

此时你定义java对象时 属性名要为s_name 显然不符合驼峰规范,此时你只需要使用 

@JsonProperty("s_name")
private String name;

这样传入的对象字段会自动映射

上一篇:阻塞队列&线程池的学习记录


下一篇:retrofit2 + 协程封装