[英]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.