【问题标题】:Jackson takes negative values and converts to valid DateJackson 取负值并转换为有效日期
【发布时间】:2013-01-11 16:41:29
【问题描述】:

我在序列化和反序列化时都将 SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS 设置为 FALSE

我从 JSON 传递“2012-04-18T19:50:00”格式的日期。当 JSON 输入包含大于零的数字时,我没有问题。但是,当我尝试以负数传递日期时遇到问题(示例 - “2012-01-28T-1:-1:00”)。这将转换为 “2013 年 1 月 27 日晚上 10:59:00”

如何明确指定 Jackson 只接受 Date 的正值?或者是否有任何解决方法可以停止从 JSON 中为 Date 对象接收负值。

【问题讨论】:

    标签: java json datetime jackson


    【解决方案1】:

    您可以定义DateFormat 用于解析,然后应该限制有效的表达式。

    【讨论】:

    • 将 SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS 设置为 FALSE 本身使用 ISO-8601 format。不需要定义'DateFormat'吧?
    • 是的,但根据问题描述,它似乎接受负值。为防止这种情况,您可以指定更严格的DateFormat(默认实现实际上并不使用DateFormat,我认为简化了实现)。
    • 您可以(也许应该)提交错误报告:接受负值并不是故意的……更多的是实现缺陷。
    • 我使用date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").parse(t); 在主类中进行了测试,其中String t = new String("2013-01-28T-1:-1:00"); 打印了正确的时间。
    • 啊。那么可能是 SimpleDateFormat 更宽松?
    猜你喜欢
    • 2017-12-22
    • 2011-08-15
    • 2014-06-24
    • 2013-10-10
    • 2016-12-21
    • 2013-02-27
    • 2017-05-20
    • 2019-12-13
    • 1970-01-01
    相关资源
    最近更新 更多