[英]Jackson how map one Pojo field to 2 (json) fields (same content, different name)
[英]Jackson map different unwrapped elements in same POJO
我正在嘗試將一些 XML 解析為 Java,但是這個 XML 一團糟。
所以看起來 Jackson 只讀取了每種類型的最后一個對象,並且每種類型的數組大小只有一個對象。
編輯。:這就是我想要做的(調試並查看表單對象的值):
public class Main {
public static void main(String[] args) throws IOException {
XmlMapper mapper = new XmlMapper();
Form form = mapper.readValue(getXml(), Form.class);
}
public static String getXml() {
return "<forms>\n"
+ " <circles><x>1</x></circles>\n"
+ " <squares><x>1</x></squares>\n"
+ " <squares><x>1</x></squares>\n"
+ " <circles><x>1</x></circles>\n"
+ " <squares><x>1</x></squares>\n"
+ "</forms>";
}
}
@JacksonXmlRootElement(localName = "forms")
class Form {
@JacksonXmlElementWrapper(useWrapping = false)
@JacksonXmlProperty(localName = "circles", isAttribute = false)
private List<Circle> circles;
@JacksonXmlElementWrapper(useWrapping = false)
@JacksonXmlProperty(localName = "squares", isAttribute = false)
private List<Square> squares;
public List<Circle> getCircles() {
return circles;
}
public void setCircles(List<Circle> circles) {
this.circles = circles;
}
public List<Square> getSquares() {
return squares;
}
public void setSquares(List<Square> squares) {
this.squares = squares;
}
}
@JacksonXmlRootElement(localName = "circles")
class Circle {
@JacksonXmlProperty(isAttribute = false)
private String x;
public String getX() {
return x;
}
public void setX(String x) {
this.x = x;
}
}
@JacksonXmlRootElement(localName = "squares")
class Square {
@JacksonXmlProperty(isAttribute = false)
private String x;
public String getX() {
return x;
}
public void setX(String x) {
this.x = x;
}
}
初始化列表。
@JacksonXmlElementWrapper(useWrapping = false)
@JacksonXmlProperty(localName = "circles", isAttribute = false)
private final List<Circle> circles = new ArrayList<>();
添加所有元素而不是替換。
public void setCircles(List<Circle> circles) {
this.circles.addAll(circles);
}
這就是訣竅。 感謝@StaxMan。
由於列表是不連續的,因此它們將被單獨創建,以便上次運行更早地覆蓋。 您可以通過實現setCircles
(etc) 來附加到 List 而不是替換它來解決這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.