Java 为什么Jackson要用一个以类命名的额外层来包装我的对象?

Java 为什么Jackson要用一个以类命名的额外层来包装我的对象?,java,json,spring-mvc,jackson,Java,Json,Spring Mvc,Jackson,当我序列化 public class FOO { int field1; String field2; } 我得到了以下信息 {"FOO":{"field1":0,"field2":"value"}} 你能告诉我怎样才能使输出像这样吗 {"field1":0,"field2":"value"} 我已经知道怎么做了。实际上,问题是MappingJacksonJsonView有一个映射,所以它以这种方式返回它{“FOO”:{“field1”:0,“field2”:“value”} 但是如果我这

当我序列化

public class FOO {
int field1;
String field2;
}
我得到了以下信息

{"FOO":{"field1":0,"field2":"value"}}
你能告诉我怎样才能使输出像这样吗

{"field1":0,"field2":"value"}

我已经知道怎么做了。实际上,问题是MappingJacksonJsonView有一个映射,所以它以这种方式返回它{“FOO”:{“field1”:0,“field2”:“value”}

但是如果我这样配置的话

<beans:bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
       <beans:property name="extractValueFromSingleKeyModel" value="true" />
</beans:bean>


它将序列化对象本身,而不是整个映射。我希望它能帮助其他人。

第二种形式是默认形式。你必须配置Jackson来添加包装器。实际上,我在SpringMVC中使用了它。因此,action方法返回new Foo()是我能做的最好的方法;调用Jackson时,已添加包装器,自动在模型中公开@PathVariables会导致所有具有{@PathVariable}参数的方法在模型中包含{@PathVariable},因此模型始终包含多个项,因此{extractValueFromSingleKeyModel}不起作用。在这种情况下,您对如何移除包装有何想法?@candrews我想您会使用该属性,如下所示: