@JsonProperty nicht wie erwartet funktioniert

Bekomme ich die folgende exception, wenn ich konsumieren einen restful webservice mit Spring RestTemplate

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "IMP-SourceTxnId" (class com.model.ResponseBaseParameters) not marked as ignorable (4 known properties: , "sourceTxnId", "incommTxnId", "responseCode", "responseText"])

at [Source: sun.net.www.protocol.http.HttpURLConnection$HttpInputStream@2f2ddd7c; line: 1, column: 130] (through reference chain: com.incomm.ife.model.rogers.RogersTransactionResponse["responseBaseParameters"]->com.incomm.ife.model.rogers.ResponseBaseParameters["IMP-SourceTxnId"])
at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:79)
at com.fasterxml.jackson.databind.DeserializationContext.reportUnknownProperty(DeserializationContext.java:555)
at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:708)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1159)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:315)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:121)
at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:449)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:98)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:295)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:121)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2888)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2094)
at org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.readInternal(MappingJackson2HttpMessageConverter.java:123)
... 54 more

Den response-parameter ist

{

  "responseBaseParameters":  

{

  "responseCode": "32",

  "responseText": "Invalid Request",

  "incommTxnId": null,

  "IMP-SourceTxnId": "551932ba-6af4-44f9-ab98-db5bc96e962b"

 }

}

und meine POJO-Klasse ist

public class ResponseBaseParameters {

private String responseCode;

private String responseText;
private String incommTxnId;
@JsonProperty("IMP-SourceTxnId")
private String sourceTxnId;

public String getResponseCode() {
    return responseCode;
}

public void setResponseCode(String responseCode) {
    this.responseCode = responseCode;
}

public String getResponseText() {
    return responseText;
}

public void setResponseText(String responseText) {
    this.responseText = responseText;
}

public String getIncommTxnId() {
    return incommTxnId;
}

public void setIncommTxnId(String incommTxnId) {
    this.incommTxnId = incommTxnId;
}

public String getSourceTxnId() {
    return sourceTxnId;
}

public void setSourceTxnId(String sourceTxnId) {
    this.sourceTxnId = sourceTxnId;
}

}

Bitte jede Einsicht, warum ich immer diese Fehlermeldung. Dank

Können Sie nach dem rest der stack-trace
Was passiert, wenn Sie versuchen, serialisieren Sie Ihre POJO zu JSON? Hat die serialisierte version haben das Feld?
Ich habe nicht versucht zu serialisieren, die das gleiche Objekt, weil ich nicht haben müssen.
Haben Sie durch Zufall haben die beiden jackson-Bibliotheken in den classpath (codehaus/jackson1 und fasterxml/jackson2) ? Wenn ja, möglicherweise haben Sie die falsche annotation (eigentlich die richtige Anmerkung, aber importiert aus dem falschen Paket).
Dies scheint es zu sein ! Nur ändern Sie Sie auf die richtige com.fasterxml.jackson.annotation.JsonProperty importieren und es sollte funktionieren.

InformationsquelleAutor Ayodeji | 2014-01-14

Schreibe einen Kommentar