在 xmlRootElement 之前使用 SerializationFeature.WRAP_ROOT_VALUE
Use of SerializationFeature.WRAP_ROOT_VALUE ahead of xmlRootElement
我只是想了解一下SerializationFeature.WRAP_ROOT_VALUE有什么用。
我实际上已经尝试禁用 SerializationFeature.WRAP_ROOT_VALUE 并且对于 class 我已经用 xmlRootElement 进行了注释。在这种情况下,在序列化后仍然禁用 SerializationFeature.WRAP_ROOT_VALUE 之后,我得到了根值。为了避免根值,我必须使用 xmlType。
因此,试图了解 SerializationFeature.WRAP_ROOT_VALUE 的用途是什么?
我试过的示例代码
@XmlRootElement(name="person")
Public class Person {
@XmlElement(name = "insert")
private int insert;
@XmlElement(name = "update")
private int update;
}
上面是我尝试序列化的POJO class,我也用过
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true);
所以上面的代码输出是
"person" {
"insert" : 1,
"update" : 0
}
在相同的情况下,如果我尝试将 Person class 中的 xmlRootElement 更改为 XmlType,则输出为
{
"insert" : 1,
"update" : 0
}
所以我很困惑,如果 SerializationFeature.WRAP_ROOT_VALUE 没有给出预期的输出,它有什么用?
我用的是Jackson版本2.9.6
深入研究后发现,在 CXF 的帮助下,我能够通过在 applicationcontext.xml 文件
中添加小配置来解决这个问题
<bean class="org.apache.cxf.jaxrs.provider.json.JSONProvider">
<property name="dropRootElement" value="true" />
</bean>
我只是想了解一下SerializationFeature.WRAP_ROOT_VALUE有什么用。 我实际上已经尝试禁用 SerializationFeature.WRAP_ROOT_VALUE 并且对于 class 我已经用 xmlRootElement 进行了注释。在这种情况下,在序列化后仍然禁用 SerializationFeature.WRAP_ROOT_VALUE 之后,我得到了根值。为了避免根值,我必须使用 xmlType。 因此,试图了解 SerializationFeature.WRAP_ROOT_VALUE 的用途是什么?
我试过的示例代码
@XmlRootElement(name="person")
Public class Person {
@XmlElement(name = "insert")
private int insert;
@XmlElement(name = "update")
private int update;
}
上面是我尝试序列化的POJO class,我也用过
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true);
所以上面的代码输出是
"person" {
"insert" : 1,
"update" : 0
}
在相同的情况下,如果我尝试将 Person class 中的 xmlRootElement 更改为 XmlType,则输出为
{
"insert" : 1,
"update" : 0
}
所以我很困惑,如果 SerializationFeature.WRAP_ROOT_VALUE 没有给出预期的输出,它有什么用? 我用的是Jackson版本2.9.6
深入研究后发现,在 CXF 的帮助下,我能够通过在 applicationcontext.xml 文件
中添加小配置来解决这个问题 <bean class="org.apache.cxf.jaxrs.provider.json.JSONProvider">
<property name="dropRootElement" value="true" />
</bean>