当前位置: 首页 > 面试题库 >

杰克逊@JsonFormat设置日期少一天

田谦
2023-03-14
问题内容

我在项目中使用过Spring DateRest和SpringBoot。这个项目有一个对象,我使用了@JsonFormat注释来格式化将从我的Json接收的日期字段。日期字段的格式为“ dd / MM /
yyyy”。当我发送json值“ 08/07/1980”时,杰克逊将转换为值“ 07/07/1980”。

问题是@JsonFormat将日期设置为少一天

这是我的源代码

@Temporal(TemporalType.DATE)
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy", locale = "pt-BR", timezone = "UTC")
private Date birthDate;

谢谢


问题答案:

感谢@Benjamin Lucidarme。

我使用以下方法解决了问题:

@Temporal(TemporalType.DATE)
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy", locale = "pt-BR", timezone = "Brazil/East")
private Date birthDate;

我将时区更改为“巴西/东部”或“美国/ Sao_Paulo”,并且现在可以工作

谢谢



 类似资料:
  • 我试图在Jackson的spring boot应用程序中从JSON获取日期字段。JSONFormat如下所示: 它在大多数情况下都能正常工作,但当我通过2017-0526时,它会自动将其转换为2018年5月10日。 如果日期不是yyyyMMdd格式或包含减号,我想引发异常。我试图查看堆栈溢出和Jackson文档,但找不到任何东西。 为什么JsonFormat接受负日期? 对此是否有任何解决方法,以

  • 我想使用Spring的RestTemplate plus Jackson来使用Web服务。我已经学习了几本教程,并且已经达到了创建DAO的目的。这是我获取所有域对象的方法: 但我的Web服务不会立即返回Station对象数组,而是以这种方式返回一个更具语义的表达式: 所以我的问题是,我不知道如何“告诉”RestTemplate在“stations”指示符之后立即解析对象列表,而不创建临时对象,这似

  • 问题内容: 我需要设置班级日期序列化的格式。我有Jackson的版本,没有@JsonFormat。这就是为什么我编写自定义类的原因: } 并使用它: 但是,我还有另一个具有不同日期格式的字段,并且我不想创建用于序列化的其他类。我可以将所有需要的格式(例如常量)添加到CDJsonDateSerializer类中,并通过注释设置所需的格式吗?像这样: 。 下面的答案后: 经过一些更正后,它可以工作。我

  • 我正在构建一个REST网络服务。某些类的属性类型为(JodaTime)。 将此对象发送给我的客户端(Javascript)时,我的对象 被转化为 问题是我把这个对象发回服务器时出错了,因为我无法实例化 我想有像-任何其他格式都可以。 环境 杰克逊-注释2.8.8 jackson-core 2.8.8 杰克逊-数据库2.8.8 jackson-datatype-joda 2.8.8 joda-tim

  • 我正在Jackson中寻找一种方法来允许根据根元素序列化关系。例如,我有一个不是真正的父/子关系。两个实体都可以查询。 JsonBackReference使得序列化为json时没有循环引用。然而,这也导致我不知道公司的地址。如果我是上市公司,那么地址会回来,一切都很好。但如果我列出地址,我希望看到公司被序列化。有没有办法做到这一点?