网站建设php心得体会,白城网站建设哪家好,保安网站建设,现货平台在中国合法吗jackson自定义序列化和反序列化
自定义序列化
序列化主要作用在返回数据的时候以BigDecimal统一返回3位小数为例自定义序列化处理类继承jackson的JsonSerializer类#xff0c;重写serialize方法
/*** author liouwb*/
public class BigDecimalSerializer extends JsonSeria…jackson自定义序列化和反序列化
自定义序列化
序列化主要作用在返回数据的时候以BigDecimal统一返回3位小数为例自定义序列化处理类继承jackson的JsonSerializer类重写serialize方法
/*** author liouwb*/
public class BigDecimalSerializer extends JsonSerializerBigDecimal {Overridepublic void serialize(BigDecimal value, JsonGenerator jsonGenerator, SerializerProvider serializers) throws IOException {jsonGenerator.writeString(formatBigDecimal(value));}/*** 保留3位小数*/private String formatBigDecimal(BigDecimal value) {if (Objects.nonNull(value) value.compareTo(BigDecimal.ZERO) 0) {DecimalFormat df new DecimalFormat();df.applyPattern(0.000);return df.format(value);}return null;}
}使用的时候可以直接使用Jackson的JsonSerialize注解 JsonSerialize(using BigDecimalSerializer.class)private BigDecimal amount;自定义反序列化
接收前端传入数据继承JsonDeserializer类重写deserialize方法例子后端传入前端的图片链接去掉域名只保存path部分
/*** author liouwb*/
public class StaticUrlDeserialize extends JsonDeserializerString {Overridepublic String deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {// 前端传入数据String text jsonParser.getText();// 域名前缀String domain https://domain/;// 去掉域名保留pathString path text.replace(domain, );return path;}
}使用的时候可以直接使用Jackson的JsonDeserialize注解 ApiModelProperty(value 用户头像, position 6)JsonDeserialize(using StaticUrlDeserialize.class)private String avatar;统一配置自定义序列化、反序列化
也可以使用全局统一配置统一处理BigDecimal返回格式和日期
/*** author liouwb*/
Configuration
public class JacksonConfig {Beanpublic ObjectMapper ObjectMapper() {ObjectMapper objectMapper new ObjectMapper();SimpleModule simpleModule new SimpleModule();// 自定义序列化BigDecimalsimpleModule.addSerializer(BigDecimal.class, new BigDecimalSerializer());// 自定义日期的序列化和反序列化simpleModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(yyyy-MM-dd HH:mm:ss)));simpleModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(yyyy-MM-dd)));simpleModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(HH:mm:ss)));simpleModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(yyyy-MM-dd HH:mm:ss)));simpleModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(yyyy-MM-dd)));simpleModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(HH:mm:ss)));objectMapper.registerModule(simpleModule);return objectMapper;}
}