我需要定义ZonedDateTime的JsonFormat,其中时间是在xml消息中定义的。
我添加了杰克逊罐来格式化ZonedDateTime(com.fasterxml.jackson.datatype.jsr310.JavaTimeModule)
像这样添加了JavaTimeModule:
XmlMapper xmlMapper = new XmlMapper();
xmlMapper.registerModule(new JavaTimeModule());
xmlMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
问题在于它无法正确格式化日期时间。 错误是:
com.fasterxml.jackson.databind.exc.InvalidFormatException:无法 从字符串“ 2019”反序列化类型
java.time.ZonedDateTime
的值 3 4 14 44 20 -5“:无法在以下位置解析文本“ 2019 3 4 14 44 20 -5”: 索引18
这是我定义时间模式的方式:
@JsonFormat(pattern = "yyyy M e k m s X")
private ZonedDateTime openDtGmt;
当字符串中带有负数时,如何映射区域模式?
更新 我意识到日期与约定不一致。但这来自旧系统,无法更改。 我们需要确定日期/时间模式为: 4位数字的年份;其余所有数字都没有前导零;然后是不带前导零的时区,并且数字前没有符号。 此外,时区为GMT时间。时区的格式为UTC。
我们用ObjectMapper替换了XmlMapper。 这似乎使我们克服了日期/时间格式错误,但是在XML中,出现了一个空标签,该标签失败了。 如果我们可以克服空标签错误,则可以使用自己的方法解析日期/时间。
更新 经过更多测试后,似乎我们在使用ObjectMapper时遇到的错误与空标记有关。似乎xml字符串太长。会以1000个字符的长度错误。