2016-09-30 8 views
2

jsonプロパティとxml要素を同じpojoでカスタム名でマッピングしたいと思います。以下は、私のリクエストボディ構造は次のとおりです。XMLの場合 :JSONのために@XmlElementと@JsonPropertyを同じpojoで一緒に

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

:{ "cityName": "ABC"、 "ステート名": "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と私のために働いた。おかげで

関連する問題