@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
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es gibt viele Implementierungen von "REST-API" und Sie miteinander in Konflikt geraten. Nach viel Zeit, entschloss ich mich es mit dieser Konfiguration:
Muss, dass JsonProperty mit diesem Paket nicht org.codehaus...
In der Zusammenfassung: jersey-client-1, jackson json-Eigenschaft und entfernen Sie alle anderen jaxrc libs.
Obs:. Ich benutzte jackson, weil der container schon vorhanden, aber, wenn es für Sie funktioniert, Sie konnten testen Sie eine andere Kombinationen.
InformationsquelleAutor Josiel Novaes