@JsonValue
javadoc声明:"标记注释类似于javax.xml.bind.annotation.XmlValue"。为什么它相似,有什么区别?
我问这是JAXB中的新手,因为javadoc太神秘了所以我无法找到两者的真实意图,为什么@JsonValue在Java EE规范中不可用,因为它使我们能够将对象正确序列化为字符串(有关上下文,请参阅here)
答案 0 :(得分:2)
@JsonValue
是Jackson注释(Jackson是一个开源的JSON绑定库),@XmlValue
是一个JAXB(JSR-222)注释。
@JsonValue javadoc声明:“Marker注释类似于 javax.xml.bind.annotation.XmlValue“。为什么它类似,是什么 差异?
我认为杰克逊的行为方面没有任何差异。
我找不到两者的真实意图
杰克逊除了支持JAXB注释之外,还有至少几个原因:
为什么@JsonValue在Java EE规范中不可用
JAXB是Java EE的一部分,而杰克逊则不是。 JSON-Binding JSR(JSR-367)将成为Java EE 8的一部分(希望Jackson能够参与并实施)。
“我不认为杰克逊方面存在任何分歧 行为。“。在我上面发布的链接中存在差异,因为 如果我在toString()方法中使用@JsonValue它用于序列化 class as string,但是如果我在同一个方法中使用@XmlValue则没有 发生。见这里
如果杰克逊在@JsonValue
方法支持toString()
,但@XmlValue
支持@XmlValue
,则至少有一个区别。在JAXB中将toString()
放在{{1}}方法上是无效的,所以这可能是杰克逊不支持它的原因。
注意:强>
要在Jackson中使用任何JAXB注释,您需要启用此功能: