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;
}
}
ジャクソンを直接使用する場合は動作します。どのようにJSONを生成しますか?経由?そして、「うまくいきません」というのは、間違いについて何も触れていないことです。 – ulab
@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"}に変更された場合にもうまくいきます。 –
認識されないフィールド "city"は "cityName"と同じではありません。そのタイプミスですか?プロパティで説明されているように "cityName"を使用する必要があります。 – ulab