[英]Parse same XML tag to different java objects
我正在尝试将下面的 xml 解析为 java 对象
<MyCar>
<Object name="Car's Front" type="CarFront">
<Object name="Car's Bumper" type="Bumper"></Object>
<Object name="Car's Headlight" type="Headlight"></Object>
<Object name="Car's Windshield" type="Windshield"></Object>
</Object>
</MyCar>
Java代码
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
public class MyCarParser {
public static void main(String[] args) throws Exception {
XmlMapper xmlMapper = new XmlMapper();
xmlMapper.readValue(new File("car.xml"), MyCar.class);
}
}
class MyCar {
public String version;
@JsonProperty("Object")
public CarFront carFront; // This works
}
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "type")
abstract class CarObjects {
public String name;
}
class CarFront extends CarObjects {
// ???
public Bumper bumper;
public Headlight headlight;
public Windshield windshield;
}
class Bumper extends CarObjects {}
class Headlight extends CarObjects {}
class Windshield extends CarObjects {}
关于我应该使用什么注释/扩展的任何建议,以便我可以正确地将此 XML 序列化/反序列化为我想要的 Java 对象结构。
您已将@JsonSubTypes
添加到CarOjects
@JsonSubTypes({
@JsonSubTypes.Type(value=Bumper.class, name = "Bumper"),
@JsonSubTypes.Type(value=Headlight.class, name = "Headlight"),
// and so on ..
})
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "type")
abstract class CarObjects {
public String name;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.