javascript
格式化json_在Spring Boot中格式化JSON日期
1.概述
在本教程中,我們將展示如何在Spring Boot應用程序中格式化JSON日期字段。 我們將探討使用Jackson格式化日期的各種方法,它被Spring Boot用作默認的JSON處理器。
2.在日期字段上使用@JsonFormat
2.1設置格式
我們可以使用 @JsonFormat注釋來格式化特定字段:
public class Contact {
// other fields
@JsonFormat(pattern="yyyy-MM-dd")
private LocalDate birthday;
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private LocalDateTime lastUpdate;
// standard getters and setters
}
在生日字段上,我們使用的格式只顯示日期,而在 lastUpdate字段中我們也包含時間。 我們使用了Java 8日期類型,它們非常便于處理時態類型。當然,如果我們需要使用像java.util.Date 這樣的遺留類型 ,我們可以以相同的方式使用注釋:
public class ContactWithJavaUtilDate {
// other fields
@JsonFormat(pattern="yyyy-MM-dd")
private Date birthday;
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date lastUpdate;
// standard getters and setters
}
最后,讓我們看看使用給定日期格式的@JsonFormat 呈現的輸出 :
{
"birthday": "2019-02-03",
"lastUpdate": "2019-02-03 10:08:02"
}
我們可以看到,使用@JsonFormat 注釋是格式化特定日期字段的絕佳方法。 但是,我們只應在需要字段的特定格式時使用它。如果我們想要在我們的應用程序中使用所有日期的通用格式,那么如何實現這一目標的方式更好,我們稍后會看到。
2.2設置時區
另外,如果我們需要使用特定的時區,我們可以設置@JsonFormat的timezone屬性:
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone="Europe/Zagreb")
private LocalDateTime lastUpdate;
如果類型已包含時區,則不需要使用它,例如使用 java.time.ZonedDatetime.
3.配置默認格式
雖然@JsonFormat本身很強大,但對格式和時區進行硬編碼可能會讓我們陷入困境。 如果我們要為應用程序中的所有日期配置默認格式,則更靈活的方法是在application.properties中配置它:
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
如果我們想在JSON日期中使用特定時區,那么還有一個屬性:
spring.jackson.time-zone=Europe/Zagreb
盡管設置這樣的默認格式非常方便直接,但這種方法存在缺陷。不幸的是,它不適用于Java 8日期類型,如 LocalDate 和 LocalDateTime - 我們只能使用它來格式化java.util.Date或 java.util.Calendar類型的字段 。 但是,我們很快就會看到希望。
4.自定義Jackson的ObjectMapper
因此,如果我們想使用Java 8日期類型 并 設置默認日期格式,那么我們需要查看創建一個 Jackson2ObjectMapperBuilderCustomizer bean:
@Configuration
public class ContactAppConfig {
private static final String dateFormat = "yyyy-MM-dd";
private static final String dateTimeFormat = "yyyy-MM-dd HH:mm:ss";
@Bean
public Jackson2ObjectMapperBuilderCustomizer jsonCustomizer() {
return builder -> {
builder.simpleDateFormat(dateTimeFormat);
builder.serializers(new LocalDateSerializer(DateTimeFormatter.ofPattern(dateFormat)));
builder.serializers(new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(dateTimeFormat)));
};
}
}
上面的示例顯示了如何在我們的應用程序中配置默認格式。我們必須定義一個bean并覆蓋其自定義方法以設置所需的格式。 雖然這種方法可能看起來有點麻煩,但它的優點在于它適用于Java 8和遺留日期類型。
5.結論
在本文中,我們探索了許多在Spring Boot應用程序中格式化JSON日期的方法。
與往常一樣,我們可以在GitHub上找到示例的源代碼。
原文鏈接:https://www.baeldung.com/spring-boot-formatting-json-dates
作者: baeldung
譯者:Yunooa
推薦:?Spring Cloud Alibaba基礎教程:使用Nacos實現服務注冊與發現
上一篇:如何編寫自己的Spring Boot Rest服務
?關注公眾號
點擊原文
總結
以上是生活随笔為你收集整理的格式化json_在Spring Boot中格式化JSON日期的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cli2弃用了吗 vue_vue-cli
- 下一篇: vue 计算属性和data_vue之wa