【发布时间】:2020-09-25 09:53:54
【问题描述】:
我正在尝试将下面的 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 对象结构。
【问题讨论】:
-
在调试 XML/JSON 的 解析 时,将其翻转为 generate XML/JSON 总是更容易找到问题,因此您可以看到 POJO 属性如何映射到 XML/JSON。 --- 例如您将看到
name生成为ab XML 元素,而不是属性。这只是问题之一。