Json和对象之间的转换

JSON数据在线格式化

springMVC 数据格式转换

需要添加json转换依赖:比如fastjson

  • 将对象转换为json数据格式

@ResponseBody


添加该注解的controller方法,字符串不会被视图解析器解析,会直接返回字符串格式

新建一个springmvc项目,并添加web框架支持

导入webmvc和fastjson依赖

  • fastjson能方便的将对象格式转换为json格式
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.2.5.RELEASE</version>
</dependency>

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.4</version>
</dependency>

配置web.xml

  • 配置DispatcherServlet
  • 绑定springmvc配置文件
  • 所有请求都会经过该servlet
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
         http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    
    <servlet>
        <servlet-name>springmvc</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>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

配置springmvc配置文件

  • 扫描包
  • 开启注解支持
<?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
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
        https://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!--扫描controller-->
    <context:component-scan base-package="com.rm.controller"/>

    <!--开启注解驱动-->
    <mvc:annotation-driven/>

</beans>

编写实体类


public class User {

    private String name;
    private String password;

    public User() {
    }

    public User(String name, String password) {
        this.name = name;
        this.password = password;
    }
}

编写Controller

  • @ResponseBody注解表明字符串格式不会被视图解析器解析
@Controller //该类被spring容器托管
public class MyController {

    @ResponseBody
    @RequestMapping("/hello")
    public String hello(){

        User user = new User("zhangsan", "123456");
        String s = JSON.toJSONString(user);
        return s;
    }

}

配置tomcat
在这里插入图片描述

启动项目
在这里插入图片描述

SpringBoot 数据格式转换

不需要添加别的json数据转换依赖

@ResponseBody


  • 添加 @ResponseBody 注解后,Spring Boot 会直接将对象转换为 json 格式并输出为响应信息

新建一个springboot项目

  • 编写实体类
public class User {
    private String name;
    private String password;
}
  • 编写controller
@Controller
public class MyController {

    @ResponseBody
    @RequestMapping("/hello")
    public User hello(){
        User user = new User();
        user.setName("lisi");
        user.setPassword("123456");

        return user;
    }
}

测试结果
在这里插入图片描述

@RequestBody


@RequestBody 接收前端发送的json数据格式并将参数转换为后端定义的对象
使用AJAX技术

导入thymeleaf模板启动器

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

test.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>testMC</title>
</head>
<body>

    <input id="name" name="name" placeholder="请输入姓名">
    <input id="password" name="password" placeholder="请输入密码">
    返回数据如下:
    <p id="returnMessage"></p>
    <!--点击提交按钮会到a方法-->
    <a href="#" onclick="aaa()">提交请求</a>

</body>

<!--使用webjars导入jquery-->
<script src="webjars/jquery/3.5.1/jquery.js"></script>

<script type="text/javascript">
    <!--$等价于JQuery-->
    function aaa() {
        //通过id选择器选择用户输入的数据,并转换为一个User对象
        var name=$('#name').val();
        var password=$('#password').val();

        var user={
            name:name,
            password:password,
        };

        $.ajax({
            //通过请求和后端进行绑定
            url: 'world',
            dataType: 'json',
            type:'POST',
            contentType:'application/json; charset=utf-8',
            //后端从data中取数据(id选择器),键值对形式,值是前端的数据
            data:JSON.stringify(user),
            //成功或者失败都需要一个回调函数
            success:function (result) {
            //请求成功:显示在页面上
                $('#returnMessage').html(JSON.stringify(result));
            },
            error:function () {
                alert("错误");
            }
        });
    }
</script>



</html>

controller

  • @RequestBody 将json数据转换为java对象
  • @ResponseBody 将java对象转换为json数据
@Controller
public class MyController {


    //接收前端传递对象数据
    @ResponseBody
    @PostMapping("/world")
    public User world(@RequestBody User user){
        System.out.println(user);
        return user;
    }

    @RequestMapping("/test")
    public String test2(){
        return "test";
    }
}

控制台结果
在这里插入图片描述
浏览器界面
在这里插入图片描述

posted @ 2021-11-04 16:14  初夏那片海  阅读(179)  评论(0)    收藏  举报