[英]Why Jackson JSON mapping exception when Serializing/Deserializing Geometry type
当我创建用户定义的类“资产”时。
public class Asset {
private UUID id;
private String name;
}
并将该类的对象设置为响应。
@GetMapping("/testSerialization")
public Asset testSerialization() {
return new Asset()
}
该控制器工作成功。
但是当同一个控制器使用几何类型时,请求失败,
import com.vividsolutions.jts.geom.Point;
// Does not work
@GetMapping("/testSerialization")
public Point testSerialization() {
GeometryFactory geometryFactory = new GeometryFactory();
Point point = geometryFactory.createPoint(new Coordinate(1, 2));
return point;
}
我知道我必须手动或使用像Jackson-datatype-jts这样的库向 Jackson 添加序列化和反序列化引用,以使 Jackson 能够使用 Geometry 类
我的问题是,为什么我必须为几何类型显式执行此操作,而我的自定义类无需操作任何配置即可工作?
Jackson
无需对所有常规POJO
类进行任何额外配置即可运行良好。 问题出现,当POJO
类不规则时:例如,没有getters
、 setters
、 no-arg
构造函数等。
在您的情况下,两个或多个类之间具有循环引用。 当默认序列化器想要序列化所有属性时,它会因此陷入无限递归。 在这种情况下,我们需要提供自定义序列化程序来正确处理这种情况。
这就是为什么您需要为com.vividsolutions.jts.geom
包提供自定义序列化器和反序列化器的com.vividsolutions.jts.geom
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.