使用@ResponseBody对象转json和@RequestBody进行json转对象案例

  • (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>

运行效果:

在这里插入图片描述

用postman访问:

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_37924905/article/details/109088464