我正在将json列表映射到Java对象列表。我要映射的班级有一个额外的时间字段(本地时间)。
在传入的json中,时间戳字段显示为1510549200000(UTC时间戳)。此示例对应的日期为:当地时间2017年11月13日星期一格林尼治标准时间-05:00 AM 12:00:00
映射到该类时,我需要根据传入的UTC值分配一个本地时间。
映射如下:
List<myClass> items = objectMapper.readValue(
jsn_a.toString(), new TypeReference<List<myClass>>() {});
在我的Class构造函数中是:
public myClass() {
this.localTime= myUTCTime;
}
但是当我查看对象的结果列表时,我看到localTime仍然设置为null。
我可以知道为什么会这样(首先调用构造函数);但是如何在对象创建期间将utc时间戳分配给localTime字段。
答案 0 :(得分:2)
没关系,我在发布问题后就立即想到了这一点。我在utc字段设置器中分配了本地时间值。
答案 1 :(得分:2)
通常,Java-JSON映射库调用no arg构造函数将JSON对象反序列化为Java Object。
根据您使用的库,可以使用一种方法来设置arg构造函数中的字段。
或更简单地,在默认反序列化之后在字段上调用setter:
Foo foo = ... // unserialize from json
foo.setLocalTime(myUTCTime);