2016-09-30 24 views
2

我想映射json屬性和xml元素使用自定義名稱相同的pojo。下面是我的要求車身結構: 對於XML:@XmlElement和@JsonProperty一起在同一pojo

<TEST_REQUEST> 
<CITY_NAME>abc</CITY_NAME> 
<STATE_NAME>xyz</STATE_NAME> 
</TEST_REQUEST> 

對JSON:{ 「的cityName」: 「ABC」, 「Statename的」: 「XYZ」} 我用下面的代碼,但它不工作。任何人都可以請建議此代碼有什麼問題,在此先感謝

@XmlAccessorType(XmlAccessType.FIELD) 
    @XmlRootElement(name = "TEST_REQUEST") 
    @JsonIgnoreProperties(ignoreUnknown = true) 
    public class TestRequest { 

     @XmlElement(name = "CITY_NAME") 
     @JsonProperty(value = "cityName") 
     private String city; 

     @JsonProperty(value = "stateName") 
     @XmlElement(name = "STATE_NAME") 
     private String state; 

     public String getCity() { 
     return city; 
     } 

     public void setCity(String city) { 
     this.city = city; 
     } 

     public String getState() { 
     return state; 
     } 

     public void setState(String state) { 
     this.state = state; 
     } 
    } 
+0

它工作,如果你直接使用傑克遜。你如何生成JSON?通過?而「不工作」顯然不會引發任何有關錯誤的信息。 – ulab

+0

@Ulab如果使用xml有效內容命中請求,則POJO的相應屬性中的值將完美填充,但使用json有效內容時,它不會設置相應的屬性。在JSON的情況下,它會拋出錯誤:com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:無法識別的字段「city」(com.apple.ist.aconline.qpmigration.qpws.entity.request.TestRequest類),未標記爲可忽略(2個已知屬性:「CITY_NAME」,「STATE_NAME」])。但是,如果json有效內容更改爲{「CITY_NAME」:「abc」,「STATE_NAME」:「xyz」},則此場景也可以正常工作。 –

+0

無法識別的字段「city」與「cityName」不同。這是錯誤的錯誤?您必須使用屬性中提到的「cityName」。 – ulab

回答

1

我使用com解決了問題。 fasterxml .jackson.annotation.JsonProperty註釋代替org。 codehaus .jackson.annotate.JsonProperty,併爲我工作。謝謝

相關問題