当前位置: 首页 > 工具软件 > JsonSerialize > 使用案例 >

Springboot使用@JsonSerialize和@JsonDeserialize

年良骏
2023-12-01

@JsonSerialize和@JsonDeserialize

在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;
}
 类似资料: