【问题标题】:how to poperly deserialize dates in resteasy 3如何在resteasy 3中正确反序列化日期
【发布时间】:2014-06-27 16:00:59
【问题描述】:

我在wildfly8.1中使用resteasy 3.0.8.Final。当我在我的 json 中发布一些日期时,我得到了

Can not construct instance of java.util.Date from String value '2014-06-20 12:00:00': not a valid representation (error: Failed to parse Date value '2014-06-20 12:00:00': Can not parse date "2014-06-20 12:00:00": not compatible with any of standard forms ("yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd"))

我也尝试过提到的标准格式,但我得到了同样的信息。

如何配置 resteasy 以从我想要的格式解析日期?

【问题讨论】:

    标签: json parsing date resteasy wildfly


    【解决方案1】:

    您需要包含 rest easy 使用的 Jackson 注释包。

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.3.2</version>
        <scope>provided</scope>
    </dependency>
    

    接下来,您需要使用 JsonFormat 注释来注释日期字段以指定输出格式。

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    

    另一种选择是以一种受支持的格式发布您的日期。

    【讨论】:

    • 我自己想出来了,但忘了在这里发布……但无论如何这是正确的答案,tnx James
    【解决方案2】:

    你可以扩展JacksonJsonProvider:

    @Provider
    public class JsonProvider extends JacksonJsonProvider {
    
        public JsonProvider() {
            ObjectMapper objectMapper = locateMapper(ObjectMapper.class, MediaType.APPLICATION_JSON_TYPE);
            objectMapper.setDateFormat(new SimpleDateFormat("dd.MM.yyyy"));
            objectMapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);
        }
    
    }
    

    您需要将resteasy-jackson-provider 添加到您的类路径中:

    <dependency>
      <groupId>org.jboss.resteasy</groupId>
      <artifactId>resteasy-jackson-provider</artifactId>
      <version>3.0.8.Final</version>
    </dependency>
    

    SerializationConfig.Feature 已更改名称和包查看次数。您可以在org.codehaus.jackson.map.SerializationConfig 中找到它。

    【讨论】:

    • 我仍然遇到同样的错误。我看到构造函数被调用。但是在对象映射器中自定义的设置显然没有使用(?)
    猜你喜欢
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 2021-01-22
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多