java - 在 jackson 解析日期的正确日期格式是什么?

标签 java serialization jackson

我正在将 Map 映射到 Java 模型,直到今天一切都工作正常。一些新数据似乎失败了。错误如下:

org.codehaus.jackson.map.JsonMappingException: Can not construct instance of   
java.util.Date from String value '2013-08-14T12:16:02.31-05:00': not a valid
representation (error: Can not parse date "2013-08-14T12:16:02.31-05: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"))

在我的 Jackson ObjectMapper bean 中,我设置了日期格式:

<property name="myFormat">
    <bean class="java.text.SimpleDateFormat">
            <constructor-arg type="java.lang.String" value="yyyy-MM-dd'T'HH:mm:ss'Z'"/>     
    </bean>
</property>

日期格式有什么问题?

最佳答案

您缺少一位毫秒数;否则将匹配默认的 ISO-8601 值。因此,如果可能的话,只生成使用 3 位数字而不是 2 位数字的日期/时间值。

另外,你自定义的日期格式可能没有通过Spring注册(不确定,我自己不使用Spring);但如果是,则您指定文字 Z 用于时区;但你的值实际上使用相对偏移量。因此您可能需要省略引号。

关于java - 在 jackson 解析日期的正确日期格式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18240599/

相关文章:

java - 从资源文件夹获取图像时出错

java - 循环和 JOptionpane

java - Jackson——递归替换匹配的字段

java - 用于第 3 方库的自定义 jackson 反序列化器

java - 如何使用 SimpleXML (java) 获取我的解析 ATOM 提要以返回省略号而不是 &#8230

java - 尝试调用虚拟方法 'android.text.Editable android.widget.EditText.getText()'

c# - 在公共(public)交通中使用继承

c# - 具有 "self-creating"属性的对象的自定义 JSON 序列化以无限循环结束

c++ - boost 序列化 : Does the default constructor have to be public?

java - 使用 Jackson 序列化时的前缀字段