文章目录
处理器的返回值-json数据处理
(1)什么是json
JavaScript Object Notation
脚本对象标签。
- 用于存储数据的介质,类似于XML/HTML等。
- Nosql 数据库Mongodb–》文档数据库。存储的是文档–》存储的JSON。
- 用于数据的交互。以JSON的方式传递数据。
(2)json结构
- {}包裹信息,里面是使用:隔开的key/value 一对一对的。
- json里面还可以包裹json
{“name”: “John Doe”, “age”: 18, “address”: {“country” : “china”, “zip-code”: “10000”}}
(3)为什么需要使用JSON交互开发
- 请求客户端种类非常多,请求的方式有各种各样。导致服务端需要处理各种各样的方式的请求。不利于服务端统一开发。
- 使用JSON交互可以很好兼容各种不同的终端发起的请求。
ajax请求
- javaBean对象与json互转 如阿里巴巴的
fastjson
(4)返回值转json @ResponseBody
注解加在方法上,SpringMVC可以自动将方法的返回对象转为json,发送给页面
(5)参数转json @RequestBody
在形参的前边加上@RequestBody注解,该注解可以自动解析页面发送过来的json数据,解析完之后,自动的将json中的数据封装到形参对象
pom.xml
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.74</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
TestPersonToJson
public class TestPersnoToJson {
@Test
public void test01(){
Person p = new Person(1,"jack","1234");
String json = JSON.toJSONString(p);//调用静态方法toJSONString,参数传入对象 ,将对象转成json
System.out.println(json);
}
@Test
public void test02(){
String json = "{\"id\":1,\"password\":\"1234\",\"username\":\"jack\"}";
Person p = JSON.parseObject(json,Person.class);//json转javaBean,参1,json 参2 类
System.out.println(p);
}
}
pom.xml
依赖 jackson库
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.3</version>
</dependency>
Demo02ReturnController
@RequestMapping(path = "demo05.action",method = {
RequestMethod.POST,RequestMethod.GET})//回显页面
public @ResponseBody Object test05(){
//
Person p1 = new Person(1,"jack","1234");
Person p2 = new Person(2,"rose","1234");
List<Person> list = new ArrayList<Person>();
list.add(p1);
list.add(p2);
return list; //springmvc将 list使用ObjectMapper转成json
}
@RequestMapping(path = "demo06.action",method = {
RequestMethod.POST,RequestMethod.GET})//回显页面
public ModelAndView test06(@RequestBody Person person){
//
System.out.println("object:"+person);
return null;
}
(6)JSON交互的方式
- (1)请求是JSON串,在controller方法的形参上使用@RequestBody注解,将请求的JSON串绑定到pojo对象。
- (2)请求的是表单提交的方式。直接使用springMVC的参数绑定,不需要做转换。
- 返回JSON串,在controller方法的返回数据类型前加上@ResponseBody注解,将返回的对象转换为JSON串。