2016-09-30 1 views
2

Ich möchte JSON-Eigenschaft und XML-Element mit dem gleichen Pojo mit benutzerdefinierten Namen zuordnen. Im Folgenden finden Sie Struktur meiner Anfrage Körper: Für XML:@XmlElement und @JsonProperty zusammen in demselben pojo

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

Für Json: { "cityname": "abc", "state": "xyz"} ich unten Code verwendet, aber es funktioniert nicht. Kann jemand bitte vorschlagen, was in diesem Code Vielen Dank im Voraus

@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

es funktioniert, wenn Sie Jackson direkt verwenden. Wie generierst du JSON? über? Und "nicht arbeiten" spricht eindeutig nichts über den Fehler aus. – ulab

+0

@Ulab Wenn die Anfrage mit der XML-Payload beantwortet wird, werden die Werte in den jeweiligen Eigenschaften von POJO perfekt gefüllt, aber mit der Json-Payload werden die entsprechenden Eigenschaften nicht festgelegt. Im Fall von JSON wird folgender Fehler ausgegeben: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unbekanntes Feld "city" (Klasse com.apple.ist.aconline.qpmigration.qpws.entity.request.TestRequest), nicht als ignorierbar markiert (2 bekannte Eigenschaften: "CITY_NAME", "STATE_NAME"]). Dieses Szenario funktioniert jedoch auch, wenn die Json-Nutzlast in {"CITY_NAME" geändert wird: "abc", "STATE_NAME": "xyz"} –

+0

Nicht erkanntes Feld "Stadt" ist nicht dasselbe wie "StadtName". Ist das ein Tippfehler? Sie müssen "cityName" wie in der Eigenschaft erwähnt verwenden. – ulab

Antwort

1

falsch gelöst ich das Problem com verwenden. fasterxml .jackson.annotation.JsonProperty Annotation anstelle von org. Codehaus .jackson.annotate.JsonProperty und das hat bei mir funktioniert. Danke

Verwandte Themen