【发布时间】:2021-12-22 21:18:01
【问题描述】:
即使一切正常,我也找不到为什么我从 Jacksoin 收到异常。
我有以下 Json:
{
"id": "8a599509-994a-4cff-ad6d-c3f770e8d159",
"action": "0",
"code": "13",
"device_id": "0BC813D9-37FE-4FAB-9FA0-05F85CBAE777",
"branch_id": "0BC813D9-37FE-4FAB-9FA0-05F85CBAE999",
"description": "Sergio sei uno stra-figo",
"date": "2021-11-09T10:22:45",
"severity": 1
}
我需要将 Json 反序列化为的类:
@JsonIgnorePropenter code hereerties(ignoreUnknown = true)
public class LogMdto {
private String id;
public String getId() {
return id;
}
@JsonProperty(value = "object_id")
private String objectId;
@Size(max = Log.objectNameSize, message = "size may not by bigger than " + Log.objectNameSize)
@JsonProperty(value = "object_name")
private String objectName;
@JsonProperty("device_id")
private String deviceId;
@NotNull(message = "may not be null")
private String description;
@NotNull(message = "may not be null")
@Size(max = Log.codeSize,
message = "size may not by bigger than " + Log.codeSize)
private String code;
private Integer action;
private String id;
private int severity;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd'T'HH:mm:ss")
private Timestamp date;
public Timestamp getDate() {
return date;
}
public void setDate(String date) {
DateTimeFormatter dft = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
this.date = Timestamp.valueOf(LocalDateTime.from(dft.parse(date)));
}
public String getObjectId() {
return objectId;
}
public void setObjectId(String objectId) {
this.objectId = objectId;
}
public String getObjectName() {
return objectName;
}
public void setObjectName(String objectName) {
this.objectName = objectName;
}
public String getDeviceId() {
return deviceId;
}
public void setDeviceId(String deviceId) {
this.deviceId = deviceId;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public Integer getAction() {
return action;
}
public void setAction(Integer action) {
this.action = action;
}
public void setId(String id) {
this.id = id;
}
public int getSeverity() {
return severity;
}
public void setSeverity(int severity) {
this.severity = severity;
}
}
当我打电话给ObjectMapper().readValue(json, LogMdto.class) 时,我得到以下异常;
无法识别的字段“device_id”(com.plintech.LorikeetNestSpring.models.dto.mobile.LogMdto 类),未标记为可忽略
我不明白为什么会出现这个异常。 deviceId 字段是用@JsonProperty("device_id") 映射的,我有setter 和getter 但还是报错。
更新
我做了以下改动:
//Removed the annotation
private String deviceId;
.... ....
改变了setter和getter如下:
@JsonProperty(value = "device_id")
public String getDeviceId() {
return deviceId;
}
@JsonProperty(value = "device_id")
public void setDeviceId(String deviceId) {
this.deviceId = deviceId;
}
但结果总是相同的异常,我不明白我的代码有什么问题,我想不出还有什么可以尝试确保没有其他隐藏问题。
【问题讨论】:
标签: java spring-boot jackson