在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; }