【问题标题】:Resteasy exports dates in textual format on wildfly 14 (Java 11) as opposed to numeric format in wildfly 9 (Java 8)Resteasy 在 wildfly 14 (Java 11) 上以文本格式导出日期,而不是在 wildfly 9 (Java 8) 上以数字格式导出日期
【发布时间】:2019-05-04 15:01:38
【问题描述】:

我有一个在 Wildfly 9 上运行的 Java 8 上运行良好的项目。

我使用一些 REST 端点将一些 Java 对象序列化为 JSON。这是用 Resteasy 和 @Produces(MediaType.APPLICATION_JSON) 配置的。

我现在正在尝试将项目转换为可在 Wildfly 14 和 Java 11 上运行。

由于某些原因,在之前的版本中,Dateobjects 被导出为数值。在新环境中,日期以文本格式导出(例如2018-12-03T10:05:33.39Z[UTC])。

奇怪的是,有些对象的某些数据属性仍然以数字格式导出,而另一些则以文本格式导出。

我已尝试启用 WRITE_DATES_AS_TIMESTAMPS 功能,但这不会改变结果。

import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.ext.ContextResolver;
import javax.ws.rs.ext.Provider;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;

@Provider
@Produces(MediaType.APPLICATION_JSON)
public class JacksonConfig  implements ContextResolver<ObjectMapper> {
    private final ObjectMapper objectMapper;
    public JacksonConfig()
    {
        objectMapper = new ObjectMapper();
        objectMapper.enable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
    }

    @Override
    public ObjectMapper getContext(Class<?> objectType)
    {
        return objectMapper;
    }
}

【问题讨论】:

  • 不回答你的问题,我更喜欢文本格式。我想数字格式类似于1543833647428,对人类来说非常不可读。
  • @OleV.V.,我实际上想知道这种格式是否甚至是有效的文本格式。我同意使用文本格式会更好,但它也需要我在应用程序的前端进行更改。
  • 2018-12-03T10:05:33.39Z[UTC] 几乎 ISO 8601,国际标准。只有[UTC] 是Java 特定的添加。如果你能说服 Jackson 忽略这一点,那么让你的前端适应其余部分应该不会太难(或者它可以忽略最后方括号中的任何部分,并对前面的内容感到满意)。

标签: java datetime jackson wildfly resteasy


【解决方案1】:

问题与从 jackson 切换到 jsonb 有关。

在这个thread中有进一步的解释。

【讨论】:

    猜你喜欢
    • 2010-12-28
    • 2021-01-08
    • 1970-01-01
    • 2013-10-06
    • 2020-09-20
    • 1970-01-01
    • 2019-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多