私はディスク上のファイルからオブジェクトをマーシャリングできるように、サードパーティのクラス(google maps classes)のシリアル化メカニズムをオーバーライド/修正する必要があります。私は何をしようとしているのseveral examplesを見て、どれもうまくいかないようです。Jackson Mixin + creator not working
問題を抱えたクラス:
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) {}
}
マーシャリングされるJSONの私の使い方
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);
スニペット:
"start_location" : {
"lat" : 47.5985728,
"lng" : -122.3315845
},
マイエラー
com.fasterxml.jackson.databind.JsonMappingException(/ミックスイン無しで):タイプが見つかりません適切な コンストラクタ[単純型、クラス com.google.maps.model.LatLng] :JSONオブジェクト からインスタンス化することはできません(デフォルトのコンストラクタまたは作成者の欠落、またはおそらく追加/ 型情報を有効にする必要がありますか?)
私が間違っている可能性がある場所、誰もが見ていますか?
「ダブル」と「ダブル」の違いはすべて違います。 mixinクラスのコンストラクタでそれらを 'double'パラメータにしてください。 –
また、 '@JsonCreator'は必要ではありません。 –
@SotiriosDelimanolisは、クレジットを得るためにあなたのコメントを答えに変えます。それは旅行です。正直なところ、Googleからのこのクラス構造は非常に非友好的なので、私はマップとしてすべてをマーシャリングするかもしれないと思う –