【发布时间】:2020-06-01 03:20:10
【问题描述】:
当我创建一个用户定义的类“资产”时。
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 能够使用几何类
我的问题是,为什么我必须为 Geomtery 类型显式执行此操作,而我的自定义类无需操作任何配置即可工作?
【问题讨论】:
-
你能发布你的Point类是什么样子的吗?
-
你的 JSON 是什么样的?有什么例外?
-
1.点类由 com.vividsolutions.jts.geom.Point 提供。 2.返回Point对象时出现异常:Could not write JSON: Infinite recursion (StackOverflowError);嵌套异常是 com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError) (通过引用链:com.vividsolutions.jts.geom.Point["envelope"]->com.vividsolutions.jts.geom.Point["信封"]->
标签: java json serialization jackson deserialization