当前位置: 首页 > 知识库问答 >
问题:

如何使用不同的日期格式进行序列化

鲜于裕
2023-03-14

我得到了一个日期字段格式为2022-02-11的对象,我将其映射到一个对象中,如下所示:

{ "dateTimeField": "2022-02-11" }
@Data
class MyPojo {
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date dateTimeField;
}

现在我需要将这个对象作为json响应发送,但我需要它采用不同的格式:

{ "dateTimeField": "2022-02-11 00:00:00" }

如果我更改模式字段,反序列化失败:

@Data
class MyPojo {
    // com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.util.Date` from String "2022-02-11": expected format "yyyy-MM-dd HH:mm:ss"
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date dateTimeField;
}

如何使用不同的模式进行序列化

共有1个答案

余阳秋
2023-03-14

这可以通过在字段的getter和setter上使用单独的注释来实现:

@Data
class MyPojo {

    private Date dateTimeField;

    // Used during serialization
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date getDateTimeField() {
        return dateTimeField;
    }

    // Used during deserialization
    @JsonFormat(pattern = "yyyy-MM-dd")
    public void setDateTimeField(Date dateTimeField) {
        this.dateTimeField = dateTimeField;
    }
}

或者,使用Lombok的(截至2022年2月11日的实验性)onX功能:

@Data
class MyPojo {
    @Getter(onMethod_ = {@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")}) // Used during serialization
    @Setter(onMethod_ = {@JsonFormat(pattern = "yyyy-MM-dd")})          // Used during deserialization
    private Date dateTimeField;
}
 类似资料:
  • 问题内容: 我有标准ISO 8601格式的日期/时间值,例如 2010-07-26T11:37:52Z 。 我想要日期 为2010年7月26日(dd-mon-yyyy) 。我该怎么做? 问题答案: 构造两个SimpleDateFormat对象。首先,您将值从()解析为Date对象,第二次用于将Date对象转换为字符串,例如 解析可能会引发ParseException,因此您需要捕获并处理它。

  • 问题内容: 我不了解其中的一栏,但是同一栏中有两种不同的格式。 我想对其进行进一步处理,所以我希望以单一格式进行处理。 我已经尝试过这样的事情 但这给了我这个错误 ValueError:时间数据6/24/2019与指定的格式不匹配 问题答案: 使用两种格式和用于如果没有被其他的匹配和替换缺失值的或他们,最后转换为由字符串:

  • 我有两个字符串格式的日期:说,格式为。比较日期1和日期2的相等性的最佳方法是什么?我不关心时间,只关心日、年、月。我应该将它们转换为即时并进行比较吗?

  • 问题内容: 我是文本挖掘的新手,我需要从* .txt文件中提取日期并对它们进行排序。日期在句子之间(每行),其格式可能如下: 如果缺少日期,请考虑1日;如果缺少月份,请考虑1月。 我的想法是提取所有日期并将其转换为mm / dd / yyyy格式。但是,我对如何查找和替换模式有些怀疑。这是我所做的: 我只对数字日期格式进行过处理。但是我对如何用机油日期感到困惑。 我知道这是一个粗糙的代码,但这就是

  • 我需要过滤一个csv文件,其中第25列的日期格式为“yyyy-mm-dd hh:mm:ss”,以便只显示包含今天日期的整行,并将它们放在一个单独的文件中(希望这是清楚的)。 现在,我回到以下几点: Today=日期'+%y-%m-%d' awk-f“;”“{if($25==”$Today“)print}”input.csv>Today.csv“ 还有,我需要保持日期列的格式原样(YYYY-MM-D

  • ObjectMapper不会将对象格式化为自定义对象。 波乔不在我的控制之下,所以我不能改变它。我需要序列化WS的POJO对象。POJO有(我不知道为什么,因为它的日期来自数据库)。 我使用的是Spring boot 2.1.8。释放,所以。。。我将其放入我的依赖项中: 我还在应用程序中添加了这个。特性: 在配置文件中,我在配置文件中添加了这个bean,因为尽快配置ObjectMapper以接受更