【问题标题】:Strict Date Format Using Jackson and Kotlin使用 Jackson 和 Kotlin 的严格日期格式
【发布时间】:2022-01-11 05:24:47
【问题描述】:

我正在使用 Jackson、Kotlin 和 Quarkus,我的对象映射器注册 Java Time Module、Kotlin Module 和 Serialize 功能写入日期,因为时间戳已被禁用

我有一个代表我的请求正文的数据类,它包含一个名为 creationDate 的 LocalDate 字段,默认情况下我得到的格式是 yyyy-mm-dd。 由于此处输入的日期已习惯于进行网络调用,因此我想将格式更改为 MM/dd/yyyy 以方便使用

需要遵循的最佳设计是什么 1.) 以 MM/dd/YYYY 格式获取日期并提前发送?如果是这样,那么如何为我的本地日期定义默认格式 要么 2.) 从客户端获取默认的本地日期格式,然后将其解析为 MM/dd/yyyy

我遇到的主要问题是为我的日期字段定义默认格式

data class(val createDate: LocalDate, val accountId: Int) // 这是我的输入请求数据类

【问题讨论】:

  • 在我的创建日期字段中添加 @JsonFormat(pattern = "MM/dd/yyyy")@JsonDeserialize(using= LocalDateDeserializer::class) 解决了这个问题,但仍然打开的 api 显示默认为 yyyy-mm -dd

标签: kotlin jackson retrofit quarkus


【解决方案1】:

ISO 8601

您获得的默认格式 yyyy-mm-dd 是 ISO 8601,是推荐的数据交换格式。

我不知道,为什么您的网络呼叫需要不同的格式。如果您也可以将该网络调用更改为接受 ISO 8601 格式,那么最好的事情就是。在任何情况下,您都不应该让这种自定义格式污染您在请求中传递的 JSON。因此,第二好的方法是从客户端获取默认日期格式,并将其格式化为 MM/dd/yyyy 用于需要此格式的网络调用。

链接:ISO 8601 - Wikipedia

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-10
    • 2016-01-03
    • 2016-04-11
    • 2021-07-09
    • 2012-09-09
    • 1970-01-01
    相关资源
    最近更新 更多