Ich muss den Serialisierungsmechanismus für eine Klasse von Drittanbietern (google maps classes) überschreiben/beheben, so dass ich die Objekte aus einer Datei auf der Festplatte marshallen kann. Ich habe gesehen, several examples von dem, was ich versuche zu tun und keiner von ihnen scheint zu arbeiten.Jackson Mixin + Ersteller funktioniert nicht
Die unruhige Klasse:
public class LatLng implements UrlValue {
public double lat;
public double lng;
public LatLng(double lat, double lng) {
this.lat = lat;
this.lng = lng;
}
}
Mein mixin
public abstract class LatLnMixIn {
@JsonCreator
public LatLnMixIn(@JsonProperty("lat") Double lat, @JsonProperty("lng ")Double lng) {}
}
Meine Nutzung
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);
Ausschnitt aus der json zu gemarshallte:
"start_location" : {
"lat" : 47.5985728,
"lng" : -122.3315845
},
Mein Fehler (mit/ohne mixin)
com.fasterxml.jackson.databind.JsonMappingException: Kein geeigneten Konstruktor für Typen [einfache Art, Klasse com.google.maps.model.LatLng] gefunden : von JSON-Objekt nicht falsch instanziieren (fehlende Standardkonstruktors oder Schöpfer, oder vielleicht brauchen Typinformationen hinzufügen/aktivieren?)
Sieht jemand, wo ich gegangen könnte?
Das 'Double' vs' double' macht den Unterschied. Machen Sie sie einfach im mixin-Konstruktor zu "double" -Parametern. –
Auch sollte der '@ JsonCreator' nicht notwendig sein. –
@SotiriosDelimanolis machen Sie Ihren Kommentar zu einer Antwort, um Kredit zu bekommen. Das ist die Reise. Ehrlich gesagt, ist diese Klassenstruktur von Google so unfreundlich, dass ich denke, dass ich alles als Karte einordnen kann –