Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 杰克逊·米辛+;造物主不工作_Java_Jackson - Fatal编程技术网

Java 杰克逊·米辛+;造物主不工作

Java 杰克逊·米辛+;造物主不工作,java,jackson,Java,Jackson,我需要重写/修复第三方类(google maps类)的序列化机制,以便可以从磁盘上的文件封送对象。我已经看到了我正在努力做的事情,但似乎没有一个奏效 困难阶层: public class LatLng implements UrlValue { public double lat; public double lng; public LatLng(double lat, double lng) { this.lat = lat; this

我需要重写/修复第三方类(google maps类)的序列化机制,以便可以从磁盘上的文件封送对象。我已经看到了我正在努力做的事情,但似乎没有一个奏效

困难阶层:

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:没有合适的 找到类型[simple type,class]的构造函数 com.google.maps.model.LatLng]:无法从JSON对象实例化 (缺少默认构造函数或创建者,或者可能需要添加/启用 类型信息?)


有人知道我哪里出了问题吗?

混合函数使用匹配的构造函数和方法签名。您的目标类构造函数如下所示

public LatLng(double lat, double lng)
而mixin构造函数定义为

public LatLnMixIn(Double lat, Double lng)
Jackson将
double
double
视为不同的类型,因此在目标类中找不到匹配的构造函数

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



在这个具体的例子中,
@JsonCreator
注释是不必要的。
Double
vs
Double
产生了所有的不同。只需在mixin类构造函数中使它们成为双参数即可。
@JsonCreator
也不是必需的。@SotiriosDelimanolis将您的评论转化为答案即可获得积分。这就是旅行。老实说,这个来自谷歌的类结构是如此的不友好,以至于我想我可能只是把它作为一个地图来整理