针对从前端或Postman获取的数据,定义转换规则
1.自定义Boolean值判定规则
使用方法:需要判断的字段上添加
@JsonDeserialize(using = BooleanDeserializer.class)
自定义规则代码
重载 deserialize方法
示例代码:0, false 为假 1, true为真
public class BooleanDeserializer extends JsonDeserializer{ private static final String TRUE = "true"; private static final String FALSE = "false"; private static final String ZERO = "0"; private static final String ONE = "1"; @Override public Boolean deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { String text = StringUtils.defaultIfBlank(jsonParser.getText(), "").trim(); if (StringUtils.isBlank(text)) { return null; } if (TRUE.equalsIgnoreCase(text) || ONE.equalsIgnoreCase(text)) { return true; } if (FALSE.equalsIgnoreCase(text) || ZERO.equalsIgnoreCase(text)) { return false; } } }
2.指定null值转化规则
当前端或Postman发送的body体内,存在一个字段的值为null
如:{"name":null}
为了区分于不发送,自定义判定及转化规则
需要重载 deserialize 和 getNullValue 方法
使用@JsonDeserialize(using = ListStringNullAwareDeserializer.class)
自定义及转换,用法与第一个相同
public class ListStringNullAwareDeserializer extends JsonDeserializer> { @Override public List deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { String json = jsonParser.readValueAsTree().toString(); ObjectMapper objectMapper = new ObjectMapper(); return objectMapper.readValue(json, new TypeReference
>() { }); } @Override public List getNullValue(DeserializationContext ctx) { return 发送null时想要得到的数据; 如 return new ArrayList<>(); } }
示例代码意为:发送null时,得到一个空列表



