在springboot将一个对象转换成json或json解析为对象时,如果需要对某些字段指定序列化和可以使用@JsonSerialize和@JsonDeserialize注解指定自定义的序列化和反序列号器。
自定义序列化器,用于springboot将java对象解析为json时使用
public class DateTimeSerializer extends JsonSerializer<LocalDateTime> {
@Override
public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
if (value != null) {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd/HH:mm:ss");
gen.writeString(value.format(dateTimeFormatter));
} else {
gen.writeNull();
}
}
}
自定义反序列化器,用于springboot将json解析到javabean对象使用
public class DateTimeDeserializer extends JsonDeserializer<LocalDateTime> {
@Override
public LocalDateTime deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
String text = p.getText();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd-HH:mm:ss");
return LocalDateTime.parse(text, dateTimeFormatter);
}
}
在对象中使用
@Data
public class Person {
private String name;
@JsonSerialize(using = DateTimeSerializer.class)
@JsonDeserialize(using = DateTimeDeserializer.class)
private LocalDateTime birthDate;
}