SpringMVC 返回 Json 对象
web 开发中,通过 ajax 回调获取 Json 对象的需求是每一名 web 者不可绕开的话题。在 SpringMVC 中如何实现呢?话不多少,且看以下步骤。
1. Controller 中 action 方法上添加注解 @ResponseBody。
@ResponseBody 将内容或对象作为 HTTP 响应正文返回,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。
2. 项目中添加 fastjson jar 包。
fastjson 是阿里封装的一个Json处理工具包,包括“序列化”和“反序列化”两部分,效率高、使用简单是其最大的两个特点。
(关于 fasthson 更多信息,可以上 GitHub 查找 https://github.com/alibaba/fastjson/wiki)
如果您是 maven 项目,可通过以下方式配置 jar 包:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.31</version>
</dependency>
3. SpringMVC 中添加 fastjson 配置。
<!-- 设置fastjson的特性 -->
<bean id="fastJsonConfig" class="com.alibaba.fastjson.support.config.FastJsonConfig">
<property name="serializerFeatures">
<array value-type="com.alibaba.fastjson.serializer.SerializerFeature">
<!-- 消除对同一对象循环引用的问题,默认为false -->
<value>DisableCircularReferenceDetect</value>
<!-- 结果是否格式化,默认为false -->
<value>PrettyFormat</value>
<!-- 字符类型字段如果为null,输出为”“,而非null -->
<value>WriteNullStringAsEmpty</value>
</array>
</property>
</bean>
<bean id="jsonConverter" class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter4">
<property name="supportedMediaTypes" value="application/json;charset=UTF-8" />
<property name="fastJsonConfig" ref="fastJsonConfig"></property>
</bean>
<!-- 加载fastjson配置 -->
<mvc:annotation-driven>
<mvc:message-converters>
<ref bean="jsonConverter"/>
</mvc:message-converters>
</mvc:annotation-driven>
通过以上三步基本就完成了返回 json 对象的配置,前端 ajax 请求和接受此处不再赘述。