存储在我的cassandra DB中的原始时间值是:11:43:00.000000000
我试图在我的 JSON 响应中获取它:11:43:00
我得到的是:11:43
到目前为止,我在模型课上尝试过的内容:
import java.time.LocalTime;
@Getter @Setter @RequiredArgsConstructor @AllArgsConstructor
public class Test {
...
@JsonFormat(pattern="HH:mm:ss")
private LocalTime delgtexpytm;
和
@JsonFormat(pattern="KK:mm:ss")
private LocalTime delgtexpytm;
但他们都在修剪尾随的 00.
更改@JsonFormat 注释中的格式模式以包括像这样的毫秒:
@JsonFormat(pattern="HH:mm:ss.SSS")
private LocalTime delgtexpytm;
为了解决这个问题,您可以创建一个自定义序列化程序,将 LocalTime 对象格式化为所需的格式,包括尾随零。
使用 Jackson 库的 LocalTime 序列化器
import java.io.IOException;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
public class LocalTimeSerializer extends JsonSerializer<LocalTime> {
private final DateTimeFormatter formatter =
DateTimeFormatter.ofPattern("HH:mm:ss.SSSSSSSSS");
@Override
public void serialize(LocalTime value, JsonGenerator gen,
SerializerProvider serializers) throws IOException {
gen.writeString(value.format(formatter));
}
}
然后,您可以通过使用 @JsonSerialize 注释 delgtexpytm 字段来使用此自定义序列化程序:
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
@JsonSerialize(using = LocalTimeSerializer.class)
private LocalTime delgtexpytm;
使用此设置,只要将 LocalTime 对象序列化为 JSON,就会使用 LocalTimeSerializer 将它们转换为字符串。序列化器中使用的格式化程序包括尾随零,因此生成的字符串将具有所需的格式。