Вот мой POJO:
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.cloud.Timestamp;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class Course {
private String code;
private int credits;
private int id;
@JsonProperty("last_updated")
private Timestamp lastUpdated;
private String name;
private String prerequisites;
private String restrictions;
private Seats seats;
private Seats waitlist;
}
, где я читаю данные из Firestore, которые неявно сопоставляются с этим классом.
Заметная разница в том, что last_updated
имеет подчеркивание в Firestore:
, но я хочу, чтобы JSON десериализовался до lastUpdated
без подчеркивания. Я думал, что это была точка @JsonProperty
, но все, что здесь происходит, это то, что я возвращаю нулевое значение:
и следующее ведение журнала в Spring Boot:
2020-06-18 03:44:36.852 WARN 5200 --- [nio-8080-exec-1] c.g.cloud.firestore.CustomClassMapper : No setter/field for last_updated found on class ....dto.Course
2020-06-18 03:44:36.852 WARN 5200 --- [nio-8080-exec-1] c.g.cloud.firestore.CustomClassMapper : No setter/field for last_updated found on class ....dto.Course
2020-06-18 03:44:36.853 WARN 5200 --- [nio-8080-exec-1] c.g.cloud.firestore.CustomClassMapper : No setter/field for last_updated found on class ....dto.Course
Я отладил его и подтвердил, что в мире Java, lastUpdated
всегда имеет значение null.
Как я могу получить свой POJO в десериализовать last_updated
в поле lastUpdated
POJO без необходимости переименовывать свойство POJO в last_updated
(что работает, но нарушает многие принципы линтинга)?