我正在使用Spring 3.2和我的Spring MVC控制器生成JSON数据(使用jackson-databind-2.2.0)。我想用@JsonRootName(com.fasterxml.jackson.annotation.JsonRootName)注释自定义我的JSON根名称,但是,我无法弄清楚如何使用Spring配置启用它。
@JsonRootName("rootNameTest")
public class MyModel {
private String prop;
public String getProp() {
return prop;
}
public void setProp(String prop) {
this.prop = prop;
}
}
这是我在sevlet-context.xml中的设置
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="1" />
<property name="contentNegotiationManager">
<bean class="org.springframework.web.accept.ContentNegotiationManager">
<constructor-arg>
<bean class="org.springframework.web.accept.ParameterContentNegotiationStrategy">
<constructor-arg>
<map>
<entry key="json" value="application/json"/>
</map>
</constructor-arg>
</bean>
</constructor-arg>
</bean>
</property>
<property name="defaultViews">
<list>
<bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"/>
</list>
</property>
</bean>
请帮忙。感谢。
答案 0 :(得分:3)
在com.fasterxml.jackson.databind.ObjectMapper
中设置om.configure(DeserializationFeature.UNWRAP_ROOT_VALUE,true); om.configure(SerializationFeature.WRAP_ROOT_VALUE,true);
这可以通过使用您的自定义扩展到Class以上并注入org.springframework.http.converter.json.MappingJackson2HttpMessageConverter
来完成