1 起因
在给前端返回数据时, 我们会使用jackson将实体转换为json字符串, 但用车辆实体类一直报错, 原因就在于getCurrentPosition这个方法
2 解决方案
在VehicleDTO这个实体中, 存在一个特别的方法getCurrentPosition, 用于获取车辆当前的位置
public class VehicleDTO {
private String code;
private Double speed;
public Coordinate getCurrentPosition() {
// 此处省略一辈子
}
}
在进行json转换时, 代码如下:
private static String dump(Object data) {
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(data);
}
报错原因其实很简单, 在进行转换时, jackson会调用所有的get开头的方法, getCurrentPosition自然也逃不过去
可以用如下两种方式防止出现这种问题
2.1 @JsonIgnore
我们可以在需要忽略的get方法上增加这个注解, 转换后的json中则不存在对应的属性
public class VehicleDTO {
private String code;
private Double speed;
@JsonIgnore
public Coordinate getCurrentPosition() {
// 此处省略一辈子
}
}
2.2 改名, 简单粗暴
只需要去掉get前缀, getCurrentPosition->currentPosition
public class VehicleDTO {
private String code;
private Double speed;
public Coordinate currentPosition() {
// 此处省略一辈子
}
}