首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >杰克逊·米辛+创作者不工作

杰克逊·米辛+创作者不工作
EN

Stack Overflow用户
提问于 2016-12-19 20:00:27
回答 1查看 2.3K关注 0票数 3

我需要覆盖/修复第三方类(google映射类)的序列化机制,这样我就可以从磁盘上的文件中封送对象。我已经看到了several examples我正在努力做的事情,似乎没有任何一个工作。

有问题的学生:

代码语言:javascript
复制
public class LatLng implements UrlValue {
    public double lat;
    public double lng;

    public LatLng(double lat, double lng) {
        this.lat = lat;
        this.lng = lng;
    }
}

我的混音

代码语言:javascript
复制
public abstract class LatLnMixIn {
    @JsonCreator
    public LatLnMixIn(@JsonProperty("lat") Double lat, @JsonProperty("lng ")Double lng) {}
}

我的用法

代码语言:javascript
复制
 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代码片段:

代码语言:javascript
复制
      "start_location" : {
        "lat" : 47.5985728,
        "lng" : -122.3315845
      },

我的错误(有/没有混音)

com.fasterxml.jackson.databind.JsonMappingException:找不到合适的构造函数类型简单类型,类com.google.maps.model.LatLng:不能从JSON对象实例化(缺少默认构造函数或创建者,或者可能需要添加/启用类型信息?)

有人看到我哪里出错了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-19 22:16:54

Mixins使用匹配的构造函数和方法签名。您的目标类构造函数看起来像

代码语言:javascript
复制
public LatLng(double lat, double lng)

当混合构造函数定义为

代码语言:javascript
复制
public LatLnMixIn(Double lat, Double lng)

Jackson认为doubleDouble是不同的类型,因此在目标类中找不到匹配的构造函数。

只需将构造函数更改为使用double参数即可。

在这个特定的例子中,@JsonCreator注释是不必要的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41230107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档