我有一个JSON数据对象类,如下所示:
public class Plugins {
private String id;
private String name;
@JsonProperty("created_at")
private long createdAt;
}
其中createdAt
是创建日期的长时间戳。我使用这个类来备份一个JacksonObjectMapper
对象,该对象解析来自外部API调用的JSON数据。我想知道是否可以让Jackson自动将created_at
转换为可读的日期格式,并以String
或Date
的形式存储在Java中?
3条答案
按热度按时间bxfogqkk1#
是否有可能让Jackson自动将
created_at
转换为可读日期格式,并以String
或Date
存储在Java中?Date
已过时,不建议使用。自从Java 8(大约10年前发布)以来,我们有了现代的Time API,其中包括
Instant
、LocalDateTime
和java.time
包中的其他类。您可以更改POJO以使其正确存储日期-时间信息,而无需更改JSON有效负载。例如,
created_at
可以作为long
值(如1665148545
)接收,并转换为ZonedDateTime
(或其他日期-时间表示形式,如Istant
、LocalDateTime
)。bihw5rsg2#
您只需要注册
JavaTimeModule
模块,并使用Java-8
时间包中的所需类型。请看下面的示例:以上代码打印:
h4cxqtbf3#
在Jackson中使用自定义反序列化程序
您可以使用自订还原序列器,将日期从long转换为String或Date。此自订还原序列器会将json中的long值转换为定义的日期格式(Date或String)。
**请注意:**这里,我已经将epoch值转换为String数据类型。如果需要Date数据类型,您可以相应地更改
CustomDateSerializer
类的deserialize method
的实现。@JsonDeserialize(using = CustomDateSerializer.class)
请在下面查找代码:
插件.java
自定义日期序列化程序.java
测试.java
输出: