【发布时间】:2020-06-18 07:54:07
【问题描述】:
这是我的 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 始终为空。
如何让我的 POJO 将 last_updated 反序列化为 lastUpdated POJO 字段,而无需将 POJO 属性重命名为 last_updated(这可行,但违反了许多 linting 原则)?
【问题讨论】:
标签: json spring spring-boot google-cloud-firestore jackson