-
(1)什么时候使用到json?
ajax请求 -
(2)javaBean对像与json互转 如
阿里巴巴的fastjson
-
(3)返回值转json
@ResponseBody
注解加在方法上,SpringMVC可以自动将方法的返回对象转为json,发送给页面 -
(4)参数转json
@RequestBody
在形参的前边加上@RequestBody注解,该注解可以自动解析页面发送过来的json数据,解析完之后,自动的将json中的数据封装到形参对象
案例代码
pom.xml
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.74</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.3</version>
</dependency>
</dependencies>
首先是阿里巴巴的fastjson
的测试代码:
/**
* Created by 李柏霖
* 2020/10/14 23:26
*/
package com.lbl.person;
import com.alibaba.fastjson.JSON;
import com.lbl.domain.Person;
import org.junit.Test;
public class TestPersnoToJson {
@Test
public void test01(){
Person p = new Person("jack","1234");
String json = JSON.toJSONString(p);//调用静态方法toJSONString,参数传入对象 ,将对象转成json
System.out.println(json);
}
@Test
public void test02(){
String json = "{\"username\":\"jack\",\"password\":\"`123456`\"}";
Person p = JSON.parseObject(json,Person.class);//json转javaBean,参1,json 参2 类
System.out.println(p);
}
}
运行效果:
然后是@ResponseBody和@RequestBody进行json的转换代码案例
PersonController
/**
* Created by 李柏霖
* 2020/10/13 10:18
*/
package com.lbl.Controller;
import com.lbl.domain.Person;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import java.util.ArrayList;
import java.util.List;
@Controller
public class PersonController {
@ResponseBody
@RequestMapping(path = "demo05.action",method = {RequestMethod.POST,RequestMethod.GET})//回显页面
public Object test05(){//
Person p1 = new Person("jack","1234");
Person p2 = new Person("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;
}
}
Person
/**
* Created by 李柏霖
* 2020/10/13 9:47
*/
package com.lbl.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Person {
private String username;
private String password;
}
springmvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<context:component-scan base-package="com.lbl.Controller"></context:component-scan>
<!---->
<mvc:annotation-driven/>
<!--配置视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--定义页面路径的前缀-->
<property name="prefix" value="/WEB-INF/jsp/"/>
<!--定义页面路径的后缀-->
<property name="suffix" value=".jsp"/>
</bean>
</beans>
web.xml
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
</web-app>