如何在spring mvc 3.2中启用@JsonRootName

时间:2013-05-07 19:52:27

标签: spring-mvc jackson

我正在使用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>

请帮忙。感谢。

1 个答案:

答案 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

来完成