3 回答

TA貢獻(xiàn)1801條經(jīng)驗 獲得超16個贊
用 @JsonSerialize(using = CustomSerializer.class)
@Entity(name = "users")
public class User implements Serializable {
@Id
@GeneratedValue
@Column(name = "user_id")
private Long id;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@JsonSerialize(using = CustomSerializer.class)
@Column(name = "date_of_birth")
private LocalDateTime dateOfBirth;
. . .
}
自定義序列化程序類:
public class CustomSerializer extends JsonSerializer<LocalDateTime> {
@Override
public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
//add your custom date parser
gen.writeString(value.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()+"");
}
}

TA貢獻(xiàn)1797條經(jīng)驗 獲得超6個贊
如果您不想裝飾所有對象,@JsonSerialize可以將對象映射器配置為始終返回 long for LocalDateTime.
@Bean
public ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
JavaTimeModule javaTimeModule = new JavaTimeModule();
javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateSerializer());
javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateDeserializer());
objectMapper.registerModule(javaTimeModule);
return objectMapper;
}
和 de- 和序列化器。
public class LocalDateSerializer extends JsonSerializer<LocalDateTime> {
@Override
public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
gen.writeString(String.valueOf(value.atZone(ZoneId.systemDefault()).toEpochSecond()));
}
}
public class LocalDateDeserializer extends JsonDeserializer<LocalDateTime> {
@Override
public LocalDateTime deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
return LocalDateTime.ofInstant(Instant.ofEpochSecond(Long.parseLong(p.getValueAsString())), ZoneId.systemDefault());
}
}
在您的示例中,您使用的出生日期可能是LocalDate.

TA貢獻(xiàn)1906條經(jīng)驗 獲得超10個贊
為什么不按如下方式存儲日期屬性:
@Temporal(TemporalType.TIMESTAMP)
private Date date = new Date();
它以毫秒為單位給出日期。將其格式化為所需的輸出是應(yīng)用層的責(zé)任。不要在實體本身上做一些注釋。
添加回答
舉報