springBoot常用注解

1、校验类注解

1.1 后端 —> 前端
@JsonIgnore   // 返回json数据时(实体序列化,即@ResponseBody), 实体类标注有该注解,将不会返回该属性
1.2 前端 —> 后端
@Valid // 启用过滤
@NotBlank(message = "名称不能为空") //标注这个注解,其属性不能为null,需搭配@Valid
@Pattern(regexp="^[\\u4e00-\\u9fa5a-zA-Z0-9]{1,64}$",message="正则表达式")

2、JSON 序列化、反序列化的注解

2.1 @DateTimeFormat和@JsonFormat的区别

@JsonFormat(pattern = DateUtil.DATE_TIME_PATTERN) // 后 -> 前,  Date -> JsonString
private Date startTime;

@DateTimeFormat(pattern = DateUtil.DATE_TIME_PATTERN) // 前 -> 后, JsonString -> Date
private Date startTime;

/**
* 一、功能: @DateTimeFormat和@JsonFormat都是处理时间格式化问题的,把其他类型转换成自己需要的时间类型。
  二、导包:  @DateTimeFormat和@JsonFormat分别属于spring和jackson,所以我们需要导入相应的包。
  三、区别:
		来源的包不同,作用也不同:
			@DateTimeFormat是spring包里面的注解,作用是接收从页面传到后台的日期值;
			@JsonFormat是jackson包里面的注解,作用是从后台向前台传递日期值;
		使用@DateTimeFormat时,前台向后台传数据,必须要使用url拼接参数的方式才生效;
  四、注意: 
  	  4.1 @JsonFormat只是在将实体返回给前端JSON格式数据时才有效的转换为(yyyy-MM-dd HH:mm:ss)格式的时间,
  	  其他时候日期格式不会被转换。 例如使用了控制器使用@ResponseBody序列化 或在JSON序列化时 JSON.toJsonString()
  	  4.2 使用@DateTimeFormat时,前台向后台传数据,必须要使用url拼接参数的方式才生效;
*/

2.2 @JsonDeserialize

// json反序列化处理
@JsonDeserialize(using = Boolean2IntegerDeserializer.class)
private Integer isEnabled;

/**
 * 反序列化处理
 * <p> 
 *   Integer类型字段转Boolean, (0,1) ==> (false,true))
 * </p>
 * @date 2023/1/6 9:55
 */
public class Boolean2IntegerDeserializer extends JsonDeserializer<Integer> {

    @Override
    public Integer deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException {
    	// 拿到jsonString该字段的值(字符串)
        String stringValue = jp.getText();
        if (Objects.nonNull(stringValue)) {
            if ("true".equalsIgnoreCase(stringValue) || "false".equalsIgnoreCase(stringValue)){
                return "true".equalsIgnoreCase(stringValue) ? 1 : 0;
            }else if (NumberUtil.isNumber(stringValue)){
                return Integer.parseInt(stringValue);
            }else {
                throw new JsonParseException(jp, "json 转换异常, 无法解析的字段类型!");
            }
        }
        // 如果为空, 默认返回0
        return 0;
    }
}

在这里插入图片描述
链接: json中的日期格式化@JsonFormat、@DateTimeFormat jackjson,fastjson,gson等

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值