gpt4 book ai didi

java - 用于 org.geolatte.geom.Point 的 Google Endpoints 转换器

转载 作者:行者123 更新时间:2023-11-30 10:05:30 25 4
gpt4 key购买 nike

我有一个实体,其中一个属性是位置 org.geolatte.geom.Point<G2D> .我创建了 Google 端点 Transformer<Point<G2D>, String>为此,但我收到以下错误:

com.fasterxml.jackson.databind.JsonMappingException: Direct self-reference leading to cycle (through reference chain: com.example.package.MyEntity["location"]->org.geolatte.geom.Point["envelope"]->org.geolatte.geom.Envelope["coordinateReferenceSystem"]->org.geolatte.geom.crs.Geographic2DCoordinateReferenceSystem["coordinateSystem"]->org.geolatte.geom.crs.EllipsoidalCoordinateSystem2D["axes"]->org.geolatte.geom.crs.GeodeticLongitudeCSAxis["unit"]->org.geolatte.geom.crs.AngularUnit["fundamentalUnit"]->org.geolatte.geom.crs.AngularUnit["fundamentalUnit"])

为什么 Jackson 无法转换属性(property)以及应该如何转换?

最佳答案

org.geolatte.geom.Point类扩展 org.geolatte.geom.Geometry其中有 Envelope<P> getEnvelope()方法。 Jackson默认情况下序列化所有 POJO getters : get*is*方法。您需要使用 JsonIgnore 忽略这些方法注解。示例 MixIn界面可能如下所示:

interface GeometryMixIn {

@JsonIgnore
Envelope getEnvelope();

@JsonIgnore
PositionSequence getPositions();
}

现在我们需要按如下方式注册它:

ObjectMapper mapper = new ObjectMapper();
mapper.addMixIn(Geometry.class, GeometryMixIn.class);

现在您可以使用此映射器来 Point序列化。万一,其他getters以同样的方式忽略它们会有问题。不过最好OOP方法是创建自定义 POJO我们将基于 Point 创建我们可以完全控制 3-rd party libraries 的可见内容.

关于java - 用于 org.geolatte.geom.Point 的 Google Endpoints 转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55246754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com