文档章节

SpringMvc 集成fastjson

yehun
 yehun
发布于 2017/04/01 13:47
字数 446
阅读 42
收藏 0

因为平时用fastjson, 不太喜欢jackson, 而且fastjson比jackson效率上高不少, 所以就产生了一个问题

restful api返回参数问题

下面是配置

<mvc:annotation-driven>
    <mvc:message-converters register-defaults="true">
        <!-- @ResponseBody乱码问题,将StringHttpMessageConverter的默认编码设为UTF-8 -->
        <bean class="org.springframework.http.converter.StringHttpMessageConverter">
            <constructor-arg value="UTF-8"/>
        </bean>
        <!-- 配置fastjson支持 -->
        <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
            <property name="charset" value="UTF-8"/>
            <!--supportedMediaTypes增加[text/html;charset=UTF-8]值,是为了兼容IE6
            否则[application/json]值在IE6中会导致弹出对话框询问是否保存文件,而firefox等高级浏览器会正常打印json字符串
            若像下面这样给supportedMediaTypes属性赋两个值[text/html;charset=UTF-8]和[application/json],则[application/json]是无效的
            因为此时应答给浏览器(或者说请求方)的Content-Type头信息都是[text/html;charset=UTF-8],所以给它一个值就行了
            如果给supportedMediaTypes的值为[application/json],则应答给浏览器的Content-Type头信息就是[application/json;charset=UTF-8]-->
            <property name="supportedMediaTypes">
                <list>
                    <value>application/json</value>
                    <!--<value>text/html;charset=UTF-8</value>-->
                </list>
            </property>
            <!--QuoteFieldNames         输出key时是否使用双引号,默认为true-->
            <!--WriteMapNullValue       是否输出值为null的字段,默认为false-->
            <!--WriteNullNumberAsZero   数值字段如果为null,输出为0,而非null-->
            <!--WriteNullListAsEmpty    List字段如果为null,输出为[],而非null-->
            <!--WriteNullStringAsEmpty  字符类型字段如果为null,输出为"",而非null-->
            <!--WriteNullBooleanAsFalse Boolean字段如果为null,输出为false,而非null-->
            <property name="features">
                <list>
                    <value>QuoteFieldNames</value>
                    <value>WriteDateUseDateFormat</value>
                    <!--<value>WriteEnumUsingToString</value>-->
                    <value>WriteMapNullValue</value>
                    <value>WriteNullNumberAsZero</value>
                    <value>WriteNullListAsEmpty</value>
                    <value>WriteNullStringAsEmpty</value>
                    <value>WriteNullBooleanAsFalse</value>
                </list>
            </property>
        </bean>
    </mvc:message-converters>
</mvc:annotation-driven>

像下面这样直接返回即可

package com.xxx.api;

import com.hairbobo.enums.ResultEnum;
import com.hairbobo.models.RestfulModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;

@Controller
@RequestMapping(value = "/test")
public class TestController {

    private final static Logger logger = LoggerFactory.getLogger(TestController.class);

    @ResponseBody
    @RequestMapping(value = "/")
    public RestfulModel index() {
        return new RestfulModel(ResultEnum.Success);
    }
}

 

© 著作权归作者所有

yehun
粉丝 8
博文 218
码字总数 137315
作品 0
长宁
高级程序员
私信 提问
解决js处理Long类型丢失精度的问题

项目中很多时候都会用到json,常用的有fastjson,Jackson等等这些,有时候为了统一,我们通常就会约定使用某一种。 不管使用哪种,Spring MVC返回个前段Long类型的数据时,js在获取数据时会丢...

xiaomin0322
2018/05/30
799
0
框架性能和易用优劣比较----之我见

1、对比(Jackson、json-lib、fastjson)性能选择Jackson为数据传输json转换器 。fastjson对null数据处理的不是很好得需要自己重新写基于SerializerFeature的实现类。 http://hjg1988.iteye...

晨润--菜菜
2014/03/07
505
2
SpringBoot版本升级引起数据显示出错及排查

描述 原来环境 Spring boot1.5.3 fastjson pojo中配置 测试结果 升级2.0.6测试结果 排查解决 经过来回更换版本等几个小时的尝试后,分析结果:Spring Boot默认采用jackson作为解析,原因可能...

豫华商
07/09
40
0
Fastjson、Jackson与SpringMVC整合的MessageConverter配置

1.Jackson maven依赖 springmvc-servlet.xml中配置 2.FastJson 由于FastJson针对Spring4.2以后进行特殊优化,具体如图 所以FastJson可以分为Spring4.2及以下配置和Spring4.2以上的不同配置 ...

楠木楠
2016/11/30
3.6K
0
spring-boot-plus 1.2.0-RELEASE 发布-快速打包-极速部署-在线演示

spring-boot-plus 集成spring boot常用开发组件的后台快速开发脚手架 Purpose 每个人都可以独立、快速、高效地开发项目! Everyone can develop projects independently, quickly and effic...

geekidea
08/06
3.7K
10

没有更多内容

加载失败,请刷新页面

加载更多

从零基础到拿到网易Java实习offer,我做对了哪些事

作为一个非科班小白,我在读研期间基本是自学Java,从一开始几乎零基础,只有一点点数据结构和Java方面的基础,到最终获得网易游戏的Java实习offer,我大概用了半年左右的时间。本文将会讲到...

Java技术江湖
昨天
5
0
程序性能checklist

程序性能checklist

Moks角木
昨天
7
0
VUE 计算属性

本文转载于:专业的前端网站▶VUE 计算属性 1、示例代码 <!DOCTYPE html><html lang="zh"> <head> <meta charset="UTF-8" /> <title>vue示例</title> </hea......

前端老手
昨天
6
0
快速搭建LNMT平台和环境部署 Tomcat详解

Tomcat部署的基本概念 1. CATALINA_HOME与CATALINA_BASE分别指什么?     CATALINA_HOME指的是Tomcat的安装目录     bin:\\Tomcat一些脚本存放目录,比如启动脚本startup.bat/start...

网络小虾米
昨天
7
0
float浮动

float浮动 float浮动概念及原理: 文档流:文档流是文档中可显示对象在排列时所占用的位置。 加浮动的元素,会脱离文档流,会沿父容器靠左或靠右排列,如果之前已经有浮动的元素,会挨着浮动...

studywin
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部