- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想要反序列化以下 XML(缩短的示例):
<annots>
<highlight subject="Highlight" page="0">
<contents>askdhaskjdhaskjhsakjhdakjshd</contents>
</highlight>
<text subject="Comment" page="0" title="Guest" color="#FFFF00">
<contents>Memo</contents>
</text>
</annots>
到目前为止我想出的代码:
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "subject")
@JsonSubTypes({
@JsonSubTypes.Type(name = "Highlight", value = Highlight.class),
@JsonSubTypes.Type(name = "Comment", value = Text.class)
})
public abstract class Annotation {
@JacksonXmlProperty(localName = "subject")
public String subject;
@JacksonXmlProperty(isAttribute = true,localName = "page")
public String page;
@JacksonXmlProperty(isAttribute = true,localName = "rect")
public String rect;
@JacksonXmlProperty(isAttribute = true,localName = "flags")
public String flags;
@JacksonXmlProperty(isAttribute = true,localName = "name")
public String name;
@JacksonXmlProperty(isAttribute = true,localName = "title")
public String title;
@JacksonXmlProperty(isAttribute = true,localName = "color")
public String color;
@JacksonXmlProperty(isAttribute = true,localName = "opacity")
public String opacity;
@JacksonXmlProperty(localName = "contents")
public String contents;
}
但是这种方法有几个问题:
我不想对 @JsonTypeInfo 使用“主题”。相反,我想使用标签名称(突出显示、文本……)。我如何从 XML 中获取此信息?
@JacksonXmlPropert(localName = "subject") 始终为 null,因为我将其用于类型信息。为什么?或者如何解决它?
或者这种方法已经是错误的吗?
最后是我使用的周边类:
@JacksonXmlElementWrapper(localName = "annots")
@JacksonXmlProperty(localName = "annots")
public List<Annotation> annots;
最佳答案
我能够使用 Highlight
和 Text
的正确Annotation
子类型以及可见的主题来解析此 xml。我必须指定该属性应该可见:
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
property = "subject",
visible = true)
此外,我使用 jackson 2.8.8 和 woodstox 5.0.3 进行 xml 解析。
上面解决了第 2 点。关于第 1 点,我认为这不能用 @JsonTypeInfo
来完成(如果有的话),因为它的整个想法是显式添加类型信息在生成的 xml 文档中。您也许可以使用 JsonTypeResolver 来解决一些问题.
关于java - Jackson XML 反序列化、多态映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43737609/
我来自 Asp.Net 世界,试图理解 Angular State 的含义。 什么是 Angular 状态?它类似于Asp.Net中的ascx组件吗?是子页面吗?它类似于工作流程状态吗? 我听到很多人
我一直在寻找 3 态拨动开关,但运气不佳。 基本上我需要一个具有以下状态的开关: |开 |不适用 |关 | slider 默认从中间开始,一旦用户向左或向右滑动,就无法回到N/A(未回答)状态。 有人
我是一名优秀的程序员,十分优秀!