JSON数据格式比较简单、解析比较方便,在接口调用及HTML⻚面Ajax调用时较常用。
jackson 是一个使用比较多,时间也比较长的 JSON 处理工具,在 SpringMVC
中使用 jackson ,只需要添加 jackson 的依赖即可:
com.fasterxml.jackson.core
jackson-databind
2.10.1
依赖添加成功后,凡是在接口中直接返回的对象,集合等等,都会自动转为
JSON。
function responseKV(){ $.ajax({
type:"post",
url:'${pageContext.request.contextPath }/responseKV',
//输入是key/value时,默认就指定好了contentType了,不需要再指定了
//contentType:'application/json;charset=utf-8',
//data为key/value形式
data:'name=json测试&price=999',
success:function(data){ alert(data);
} });
}
// 输入是key/value,输出是json
// @ResponseBody 将返回值转成json串响应给前台
@RequestMapping("/responseKV")
@ResponseBody
public Item responseKV(Item item) {
return item;
}
function requestJson(){
$.ajax({
type:"post",
url:'${pageContext.request.contextPath }/requestJson',
//输入是json是 ,需要指定contentType为application/json
contentType:'application/json;charset=utf-8',
data:'{"name":"json测试","price":999}',
success:function(data){
alert(data.name);
}
}); }
@Controller
public class JsonController {
// 输入是json,输出是json
// @RequestBody 将请求的json串转成java对象
// @ResponseBody 将返回值转成json串响应给前台
@RequestMapping("/requestJson")
@ResponseBody
public Item requestJson(@RequestBody Item item) {
return item; }
}
gson 是 Google 推出的一个 JSON 解析器,主要在 Android 开发中使用较 多,不过,Web 开发中也是支持这个的,而且 SpringMVC 还针对 Gson 提供了相关的自动化配置,以致我们在项目中只要添加 gson 依赖,就可以直接使用 gson 来做 JSON 解析了。
com.google.code.gson
gson
2.8.6
如果项目中,同时存在 jackson 和 gson 的话,那么默认使用的是 jackson,
因为:
org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter 类的构造方法中,加载顺序就是先加载 jackson 的 HttpMessageConverter,后加载 gson 的 HttpMessageConverter。
加完依赖之后,就可以直接返回 JSON 字符串了。使用 Gson 时,如果想做自
定义配置,则需要自定义 HttpMessageConverter。
fastjson 号称最快的 JSON 解析器,但是也是这三个中 BUG 最多的一个。在 SpringMVC 并没针对 fastjson 提供相应的 HttpMessageConverter,所以, fastjson 在使用时,一定要自己手动配置 HttpMessageConverter(前面两个如果没有特殊需要,直接添加依赖就可以了)。
使用 fastjson,我们首先添加 fastjson 依赖:
com.alibaba
fastjson
1.2.60
然后在 SpringMVC 的配置文件中配置 HttpMessageConverter:
fastjson 默认中文乱码,添加如下配置解决:
application/json;charset=utf-8