私はジャクソンを使ってXMLをシリアライズする方法を学んでいます。私のクラス構造は以下の通りです。ジャクソンを使用したXMLへのオブジェクトのシリアライズ
class City {
@JacksonXmlProperty(localName = "CityName")
String cityName;
public City(String cityName) {
this.cityName = cityName;
}
public String getcityName() {
return cityName;
}
public void setcity(String cityName) {
this.cityName = cityName;
}
}
@JacksonXmlRootElement(localName = "Person")
class Person {
@JacksonXmlProperty(localName = "name")
private String name;
@JacksonXmlProperty(localName = "age")
private String age;
@JacksonXmlProperty(localName = "city")
private List<City> city;
public Person() { }
Person(String name, String age, List<City> city) {
this.name = name;
this.age = age;
this.city = city;
}
public String getname() {
return name;
}
public String getage() {
return age;
}
public List<City> getcity() {
return city;
}
public void setname(String name) {
this.name = name;
}
public void setage(String age) {
this.age = age;
}
public void setcity(List<City> city) {
this.city = city;
}
}
私はジャクソンを使用してXMLへのクラスをシリアル化しようとすると、私は<city>
public class App
{
public static void main(String[] args)
{
try {
XmlMapper xmlMapper2 = new XmlMapper();
Person p = new Person();
City c1 = new City("abc");
City c2 = new City("def");
City c3 = new City("ghi");
List<City> cityList = new ArrayList<City>();
cityList.add(c1);
cityList.add(c2);
cityList.add(c3);
p.setname("setattr");
p.setage("55");
p.setcity(cityList);
xmlMapper2.enable(SerializationFeature.INDENT_OUTPUT);
String respPerson = xmlMapper2.writeValueAsString(p);
System.out.println(respPerson);
} catch (Exception e) {
e.printStackTrace();
}
}
のための2つのタグを取得します。これは、私が取得出力されます。
<Person><name>setattr</name><age>55</age><city><city><CityName>sfo</CityName></city><city><CityName>sjc</CityName></city><city><CityName>sea</CityName></city></city></Person>
なぜ都市に2つのタグがあり、どのように修正できるのか理解できますか?
私は、あなたが都市のリストを持って、出力のようなものであることを
<Person><name>setattr</name><age>55</age><city><CityName>sfo</CityName><CityName>sjc</CityName><CityName>sea</CityName></city></Person>
これが重複していることを教えてください。私はすでにその投稿をチェックしています。私のコードを修正して動作させる方法に関する提案はありますか? – Anit
@JacksonXmlElementWrapper(useWrapping = false)を使用すると、タグごとにタグが囲まれていることがわかります。代わりに、すべてのcityNamesを囲むタグが1つだけ必要です –
Anit