2016-09-30 140 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,并为我工作。谢谢