我有一些以秒为单位的时间戳(即Unix时间戳)的JSON:
{"foo":"bar","timestamp":1386280997}
要求Jackson将其反序列化为带有DateTime字段的对象作为时间戳,结果是在1970-01-17T01:11:25.983Z
该时间段后不久的某个时间,因为Jackson假设它以
毫秒为单位 。除了撕开JSON并添加一些零外,我如何让Jackson理解 秒 时间戳?
我编写了一个自定义反序列化器,以秒为单位处理时间戳(Groovy语法)。
class UnixTimestampDeserializer extends JsonDeserializer<DateTime> {
Logger logger = LoggerFactory.getLogger(UnixTimestampDeserializer.class)
@Override
DateTime deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException {
String timestamp = jp.getText().trim()
try {
return new DateTime(Long.valueOf(timestamp + '000'))
} catch (NumberFormatException e) {
logger.warn('Unable to deserialize timestamp: ' + timestamp, e)
return null
}
}
}
然后,我注释了POGO以将其用于时间戳记:
class TimestampThing {
@JsonDeserialize(using = UnixTimestampDeserializer.class)
DateTime timestamp
@JsonCreator
public TimestampThing(@JsonProperty('timestamp') DateTime timestamp) {
this.timestamp = timestamp
}
}
我正在尝试反序列化列表通量 我已经研究了这个问题,它涉及一系列对象。事实上,我已经能够使用他们的Mono解决方案方法来检索Mono 当我尝试使用Flux而不是Mono时会发生什么:我已经尝试过使用WebClient和Mign-两者的效果相同。单步执行Jackson代码,在处理Flux世界时它永远不会拉回TokenBuffers。这似乎与Codecs和Jackson JSON的Spring留档中的内
我在试着读我的。json文件。Is是一个车辆存储类。 这是错误: com.fasterxml.jackson.databind.exc.MismatchedInputException:无法构造的实例(尽管至少存在一个Creator):无法构造的实例(尽管至少存在一个Creator):没有字符串参数构造函数/工厂方法来从[Source:(File); line: 1,列: 1]处的字符串值反序列化
我想进一步说明这个问题是关于什么的,我已经漫游了一个小时了,但没有找到任何东西。 更糟糕的是,正如您所看到的,该属性是final(这就是为什么我热衷于通过反序列化在实例化时使用Jackson反射能力)。我已经阅读了关于以不同的方式注释setter和getter的潜在解决方案,但如果可能的话,我希望将此属性保留为最终属性。如果不可能,我会接受一个非最终财产。 我希望答案不建议自定义序列化/反序列化,
Jackson序列化java.time。默认情况下,即时,将日期时间戳写入为纳秒。 它产生这样的 我想知道是否有办法去掉最后的零。我想要这样的东西: 我试过: 但是这个配置将其更改为毫秒表示。我想要秒部分和小数毫秒部分。
无法从字符串“1979-12-05T08:00Z”反序列化java.util.Date类型的值:无效表示(错误:无法分析日期值“1979-12-05T08:00Z”:无法分析日期“1979-12-05T08:00.000Z”:虽然它似乎符合格式“yyyy-mm-dd't'hh:mm:ss.sss'z'',但分析失败 到目前为止,我试图包含这种依赖关系: 还有: 但没有奏效。
我想用Jackson 2.13.1反序列化一个枚举。 我找到了以下解决方案。 仍将收到以下错误: