Java设置对象字段等于实例化时的另一个字段

时间:2018-12-10 17:16:56

标签: java json pojo

我正在将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字段。

2 个答案:

答案 0 :(得分:2)

没关系,我在发布问题后就立即想到了这一点。我在utc字段设置器中分配了本地时间值。

答案 1 :(得分:2)

通常,Java-JSON映射库调用no arg构造函数将JSON对象反序列化为Java Object。
根据您使用的库,可以使用一种方法来设置arg构造函数中的字段。
或更简单地,在默认反序列化之后在字段上调用setter:

Foo foo = ... // unserialize from json
foo.setLocalTime(myUTCTime);