Java установить поле объекта, равное другому полю при создании - PullRequest
0 голосов
/ 10 декабря 2018

Я отображаю список json в список объектов java.Класс, в который я отображаю, имеет дополнительное поле времени (местное время).

Во входящем json поле отметки времени отображается, например, как 1510549200000 (отметка времени UTC).Этот пример соответствует дате: понедельник, 13 ноября 2017 г., 12:00:00 GMT GMT-05: 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 голосов
/ 10 декабря 2018

Как правило, библиотеки отображения Java-JSON вызывают конструктор no arg для десериализации объекта JSON в объект Java.
В зависимости от используемых библиотек вы можете использовать способ установки полей из конструктора arg.
Или проще вызвать сеттер на поле после десериализации по умолчанию:

Foo foo = ... // unserialize from json
foo.setLocalTime(myUTCTime); 
0 голосов
/ 10 декабря 2018

Не берите в голову, я понял это, как только я отправил вопрос.Я назначил значение местного времени в поле установки utc.

...