[英]Parsing a String to LocalDateTime with optional trailing truncated zeros
[英]Jackson and LocalDateTime: Trailing zeros are removed
我在我的 Spring 引導項目中使用 Jackson 生成器 JSON。在我的 Java class 中,我使用private LocalDateTime timestamp;
Jackson 將其轉換為 JSON。當時間戳包含例如: 2022-04-26T05:59:54:124530
JSON Object 將收到2022-04-26T05:59:54:12453
這會導致我的接收系統出現錯誤,無法使用此日期格式。 不幸的是,我無法更改接收系統。
有沒有辦法讓 Jackson 告訴我不要刪除末尾的零?
LocaleDateTime class 沒有 static 字符串格式。 它包括幾個選項:
自定義序列化將幫助您實現 static output。在下面的示例中,我使用了 6 毫秒數字的格式,就像您的情況一樣。
@JsonDeserialize(using = BodyDeserializer.class)
@JsonSerialize(using = BodySerializer.class)
public class Body {
public static final DATE_FORMAT = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss:SSSSSS");
private LocalDateTime myDate;
public Body(LocalDateTime myDate) {
this.myDate = myDate;
}
public StrLocalDateTimeing getMyDate() { return myDate; }
}
public class BodyDeserializer extends JsonDeserializer {
@Override
public User deserialize(JsonParser jsonParser,
DeserializationContext deserializationContext) throws IOException {
ObjectCodec oc = jsonParser.getCodec();
JsonNode node = oc.readTree(jsonParser);
String date = node.get("myDate");
LocalDateTime myDate = LocalDateTime.from(Body.DATE_FORMAT.parse(date))
return new Body(myDate),
}
}
public class BodySerializer extends JsonSerializer {
@Override
public void serialize(Body body, JsonGenerator jsonGenerator,
SerializerProvider serializerProvider) throws IOException {
jsonGenerator.writeStartObject();
jsonGenerator.writeNumberField("myDate", Body.DATE_FORMAT.format(body.getMyDate()));
jsonGenerator.writeEndObject();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.