Spring MVC中的JSON处理
原来的做法
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.68</version>
</dependency>
@RequestMapping("/demo1")
public void demo1(HttpServletRequest request, HttpServletResponse response) throws IOException {
//1. 设置响应内容
response.setContentType("application/json;charset=utf-8");
//2. 拿流写回JSON字符串
Map<String,String> data = new HashMap<>();
data.put("name","张三");
data.put("age", "20");
String s = JSON.toJSONString(data);
response.getWriter().write(s);
}
Spring框架下
在Spring框架下,这种开发工作也可以简化。
-
导入Jackson 的json库
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.11.2</version> </dependency>
-
或者导入Gson 的json库
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.6</version> </dependency>
处理器方法:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N5cdFVXY-1599652679868)(imges/image-20200909141231370.png)]
原理
- 当处理器的方法上标记 @ResponseBody , @RequestBody
- 或者处理器的返回值类型是 HttpEntity 、 ReponseEntity 。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-chuRQ3Wk-1599652679871)(imges/image-20200909142017163.png)]
Spring内部的 HttpMessageConverter
会在 RequestMappingHandlerAdapter
处理器方法执行过程中,进行工作。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dN4txYyt-1599652679873)(imges/image-20200909143240095.png)]
下面演示用 fastJson 来处理 JSON数据的返回:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B1Q6OGNo-1599652679876)(imges/image-20200909144414388.png)]
写法:
-
1.
-
2.
-
3.当一个类中的所有方法都是json数据时 相当于下图
依据是