@JsonProperty没有按预期工作

当我使用Spring RestTemplate使用restful webservice时,我得到以下exception

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 

响应参数是

 { "responseBaseParameters": { "responseCode": "32", "responseText": "Invalid Request", "incommTxnId": null, "IMP-SourceTxnId": "551932ba-6af4-44f9-ab98-db5bc96e962b" } } 

而我的POJO课程是

 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; } } 

请知道为什么我收到此错误。 谢谢

有许多“REST API”的实现,它们相互冲突。 经过很长时间,我用这个配置解决了它:

 import com.fasterxml.jackson.annotation.JsonProperty; ... @JsonProperty("cep") private String cep; 

这个包必须有JsonProperty而不是org.codehaus …

  com.sun.jersey jersey-client 1.19 test  

总结:jersey客户端1,jackson json属性并删除所有其他jaxrc libs

OBS:。 我使用了jackson,因为容器已经提供,但是,如果它适用于你,你可以测试另一种组合。