Ich hatte Jackson deserializing Problem einer meiner Java-Klasse, die von Drittanbieter-API kommt, die nicht Standard-Konstruktoren hat. Um dieses Problem zu überwinden verwendete ich JacksonMixIn und es funktionierte Das Problem war, dass ich einen REST-Endpunkt auf Jersey API implementiert haben, die eine der oben genannten Klassen als Methodenparameter von Client-Seite zu Server-Seite akzeptiert wird.So, wenn das Deserialisieren es mir einen folgenden Fehler wirft.Wie Jackson Mixin auf Jersey REST Services Methode Parameter verwenden
No suitable constructor found for type [simple type, class net.rcarz.jiraclient.Priority]: can not instantiate from JSON object (need to add/enable type information?)
at [Source: [email protected]; line: 1, column: 454]...
Betroffene Klassen
public class TestCaseVO{
private Priority priority;
private User reporter;
}
public class Priority {
protected Priority(RestClient restclient, JSONObject json) {
super(restclient);
if (json != null)
deserialise(json);
}
}
Dies ist das Objekt verwendet Client zum Server
public class myDataObject{
private String userName;
private List<TestCaseVO> testCases;
//Getter and setters
}
Jersey Endpoint
zu kommunizieren@POST
@Path("/bug")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public TestCaseVO attachBugForTestCase(myDataObject myDataObject){
// when deserializing to MyDataObject it thorows above error
//Handle logic
}
Client-Seite Code-Schnipsel
var myDataObject= {
"testCases": [$scope.bug.TestCaseVO],
"userName":userName}
angularJsMyService.Bug.attachBug({},myDataObject)
.$promise.then(function(data){
...
}
Meine Frage also, wie kann ich mit Jackson mixin auf Parameter REST Methoden vor Jackson Deserialisieren them.Appreciate jede Hilfe.