作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有以下界面:
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.WRAPPER_OBJECT)
@JsonSubTypes({
@JsonSubTypes.Type(value = EmptyProxy.class, name = "empty"),
... other types not included ...
})
public interface Proxy {
}
我有以下实现:
@JsonTypeName("empty")
public static class EmptyProxy implements Proxy {
}
如您所见,它只是一个空类。我在这个例子中遗漏了其他(有效的)实现。
我有以下容器数据类:
public static class Data {
@JacksonXmlProperty(localName = "name")
private String name;
@JacksonXmlProperty(localName = "proxy")
private Proxy proxy;
}
反序列化 EmptyProxy
似乎不起作用。例如:
final ObjectMapper mapper = new XmlMapper().registerModule(new JacksonXmlModule());
final Data data = mapper.readValue("<data><name>my-name</name><proxy><empty/></proxy></data>", Data.class);
这给出了以下异常:
Exception in thread "main" com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of Test$EmptyProxy out of VALUE_NULL token
at [Source: java.io.StringReader@59ec2012; line: 1, column: 42] (through reference chain: Data["proxy"])
at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:148)
at com.fasterxml.jackson.databind.DeserializationContext.mappingException(DeserializationContext.java:857)
这是 Jackson 中的错误吗? FWIW,当我向 EmptyProxy
添加一个虚拟字段时,它起作用了。
更新
我只尝试使用 JAXB,得到了相同的结果。代码:
public static class Data {
@XmlElement(name = "name")
private String name;
@XmlElements({
@XmlElement(type = EmptyProxy.class, name = "empty")
})
private Proxy proxy;
}
public interface Proxy {
}
@XmlType(name = "empty")
public static class EmptyProxy implements Proxy {
}
public static void main(String[] a) throws IOException {
final ObjectMapper mapper = new XmlMapper()/*.registerModule(new JacksonXmlModule())*/.registerModule(new JaxbAnnotationModule());
final Data data = mapper.readValue("<data><name>my-name</name><proxy><empty></empty></proxy></data>", Data.class);
}
最佳答案
我为此创建了一个错误条目。参见 http://github.com/FasterXML/jackson-dataformat-xml/issues/169 .
关于java - Jackson XML - 反序列化空类和多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33722369/
我来自 Asp.Net 世界,试图理解 Angular State 的含义。 什么是 Angular 状态?它类似于Asp.Net中的ascx组件吗?是子页面吗?它类似于工作流程状态吗? 我听到很多人
我一直在寻找 3 态拨动开关,但运气不佳。 基本上我需要一个具有以下状态的开关: |开 |不适用 |关 | slider 默认从中间开始,一旦用户向左或向右滑动,就无法回到N/A(未回答)状态。 有人
我是一名优秀的程序员,十分优秀!