当前位置: 首页 > 面试题库 >

Spring配置@ResponseBody JSON格式

汤飞
2023-03-14
问题内容

想象一下,我在Spring 3 @Controller中有这个带注释的方法

@RequestMapping("")
public @ResponseBody MyObject index(@RequestBody OtherObject obj) {
    MyObject result = ...;
    return result;
}

但是我需要配置输出json格式,就像我在做的那样:

ObjectMapper om = new ObjectMapper();
om.configure(JsonGenerator.Feature.QUOTE_FIELD_NAMES, true);
om.getSerializationConfig()
        .setSerializationInclusion(JsonSerialize.Inclusion.NON_DEFAULT);
om.getSerializationConfig()
        .set(SerializationConfig.Feature.INDENT_OUTPUT, false);

有什么方法可以配置此行为?


问题答案:

这是我最终所做的。

<bean
    class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="messageConverters">
        <list>
            <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
                <property name="objectMapper" ref="jacksonObjectMapper" />
            </bean>
        </list>
    </property>
</bean>

<!-- jackson configuration : https://stackoverflow.com/questions/3661769 -->
<bean id="jacksonObjectMapper" class="org.codehaus.jackson.map.ObjectMapper" />
<bean id="jacksonSerializationConfig" class="org.codehaus.jackson.map.SerializationConfig"
    factory-bean="jacksonObjectMapper" factory-method="getSerializationConfig" />
<bean
    class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    <property name="targetObject" ref="jacksonSerializationConfig" />
    <property name="targetMethod" value="setSerializationInclusion" />
    <property name="arguments">
        <list>
            <value type="org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion">NON_DEFAULT</value>
        </list>
    </property>
</bean>

我仍然必须弄清楚如何配置其他属性,例如:

om.configure(JsonGenerator.Feature.QUOTE_FIELD_NAMES, true);


 类似资料:
  • 配置文件使用的是 JSON 格式。 JSON 中使用的数据结构和变量名对应着 Burp UI 中显示选项。生成配置文件的最简单方法是在 Burp UI 中创建所需的配置,然后保存为配置文件。您还可以手动编辑现有的配置文件,其内容是很容易就可以看懂的。 部分配置文件可以在需要时使用。您可以通过每个子工具选项卡的配置面板上的”选项(Options)”按钮来保存该区域的配置,或者通过从完整配置的文件中删

  • 高级规则的配置信息格式,快速使用方法! 配置信息格式说明 通过配置信息快速生成含有配置信息规则,配置信息格式包含几乎所有参数,不需要的参数可以选择删除。 注意:通过原始数据导入方式建议不要超过5000个字符,否则可能无法导入,如果过长推荐使用URL方式导入。 支持全部http/https/socks5/socks5-tls/custom服务器类型,支持全新tfo/obfs特性。 整个配置需要使用J

  • 在Spring Java配置中,假设我想在另一个定义中重用一个。我可以在一个文件中执行以下操作: 我之所以这么问,是因为在我的特殊用例中,A正在建立一个到消息传递代理的连接,而我有几个B消耗了该流(我在A中使用spring integration中的),我不想连接到该代理两次或更多。

  • 我使用的是Apache Camel 2.9.2和Spring 3.0.6.Release。我正在尝试使用自定义的DataFormat来封送和取消封送骆驼消息。我想使用Spring将我的自定义数据格式配置到我的一条路由中。 Apache Camel的文档指出,为了将我的自定义数据格式与Spring中的路由挂钩,我只需要将我的自定义数据格式声明为bean并在Spring路由中引用它,如下所示: htt

  • key 描述 host 服务器主机名 一般使用apigwws.open.rokid.com port 服务器端口 目前为443 branch 服务器功能选择分支 固定为/api key 用于服务登录认证  device_type_id 用于服务登录认证 secret 用于服务登录认证 device_id 设备名,用于服务登录 codec 语音编码格式: speech服务可选项"pcm" "opu"

  • 我不确定我是否很好地理解了Spring概要文件是如何处理yaml和属性文件的。我试图将这两种类型的配置分开(这两个文件不共享任何配置),但在从yaml配置中读取配置文件时遇到了问题。 我的问题是,当我试图(通过xml)配置我的数据源时,这样做: Spring总是使用YAML文件中的最后一个配置,忽略概要文件。我试图通过web.xml中的contex-parameter或直接将活动概要文件传递给JV