我需要覆盖/修复第三方类(google映射类)的序列化机制,这样我就可以从磁盘上的文件中封送对象。我已经看到了several examples我正在努力做的事情,似乎没有任何一个工作。
有问题的学生:
public class LatLng implements UrlValue {
public double lat;
public double lng;
public LatLng(double lat, double lng) {
this.lat = lat;
this.lng = lng;
}
}我的混音
public abstract class LatLnMixIn {
@JsonCreator
public LatLnMixIn(@JsonProperty("lat") Double lat, @JsonProperty("lng ")Double lng) {}
}我的用法
ObjectMapper mapper = new ObjectMapper().addMixIn(LatLng.class, LatLnMixIn.class);
InputStream mockStream = this.getClass().getResourceAsStream("/mz-to-nordstrom-rack-snoq.json");
DirectionsResult mockResult = mapper.readValue(mockStream, DirectionsResult.class);要封送的json代码片段:
"start_location" : {
"lat" : 47.5985728,
"lng" : -122.3315845
},我的错误(有/没有混音)
com.fasterxml.jackson.databind.JsonMappingException:找不到合适的构造函数类型简单类型,类com.google.maps.model.LatLng:不能从JSON对象实例化(缺少默认构造函数或创建者,或者可能需要添加/启用类型信息?)
有人看到我哪里出错了吗?
发布于 2016-12-19 22:16:54
Mixins使用匹配的构造函数和方法签名。您的目标类构造函数看起来像
public LatLng(double lat, double lng)当混合构造函数定义为
public LatLnMixIn(Double lat, Double lng)Jackson认为double和Double是不同的类型,因此在目标类中找不到匹配的构造函数。
只需将构造函数更改为使用double参数即可。
在这个特定的例子中,@JsonCreator注释是不必要的。
https://stackoverflow.com/questions/41230107
复制相似问题