SpringMvc-json处理

简介: SpringMvc-json处理

SpringMvc-json处理

在 JSON 中,使用以下两种方式来表示数据:

Object(对象):键/值对(名称/值)的集合,使用花括号{ }定义。在每个键/值对中,以键开头,后跟一个冒号:,最后是值。多个键/值对之间使用逗号,分隔,例如{“name”:“C语言中文网”,“url”:“http://c.biancheng.net”};

Array(数组):值的有序集合,使用方括号[ ]定义,数组中每个值之间使用逗号,进行分隔。

示例:

{
    "Name":"芜湖",
    "Id":9
    "Article":[
        "JSON 是什么?",
        "JSONP 是什么?",
        "JSON 语法规则"
    ]
}


简单了解了 JSON 之后,我们再来看看什么时候适合使用 JSON。 定义接口 JSON 使用最多的地方莫过于 Web 开发领域了,现在的数据接口基本上都是返回 JSON 格式的数据,比如:

1.使用 Ajax 异步加载的数据;

2.RPC 远程调用;

3.前后端分离,后端返回的数据;

4.开发 API,例如百度、高德的一些开放接口。


1.响应json

·响应json

1 加入jackson依赖

2 将jackson 的jar包加入WEB-INF的lib文件夹 *

3.在对应处理方法上面加上@ResponseBody用于标记该处理方法返回json

将@Controller改成@RestController


在pom.xml中加入jackson相关依赖

     <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.13.3</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.13.3</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.13.3</version>
        </dependency>


将依赖放入对应的文件夹中

6e28acc7f52141cca8e4be0be01cac02.png


通过在方法上加入@RespinseBody可以将返回值以文本形式输出

或者将类上面添加@RestController,即这个类下面方法输出的都是文本形式

 @RequestMapping("/json/response")
    @ResponseBody
    public User Jsonresponse(){
        User user = new User(5,"芜湖");
        return user;
    }


对于一些私密变量不想让别人看见 或者 一些特定日期类型 可以使用json中特定的方法

    @JsonIgnore //隐藏值
    private String password;
    @JsonFormat(pattern = "yyyy-MM-dd") //规范格式
    private Date birthday;


2.请求json

ajax我们经常用到,传的数据是json数据,json数据又有对象,数组。以下给大家总结了4 种常用的获取json方式:

前端:

<%--
  Created by IntelliJ IDEA.
  User: 小bobo
  Date: 2022/9/22
  Time: 14:27
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
    <script src = "https://cdn.staticfile.org/jquery/3.5.1/jquery.min.js"></script>
    <script type="text/javascript">
      //页面加载事件简写方式
      $(function () {
        $("#btnJson1").click(function () {
        $.ajax({
          url:"${pageContext.request.contextPath}/json/response2",
          method:"post",
          data:"张三",
          contentType:"application/json",
          dataType:"json",
          success:function (user) {
            alert(user.name);
          }
        });
        });
        $("#btnJson2").click(function(){
          var user={'id':'1','name':'张三'};   // 定义js对象
          $.ajax({
            url:"${pageContext.request.contextPath}/json/wuhu",
            method:"post",
            data:JSON.stringify(user),
            contentType:'application/json',
            dataType:"json",
            success:function(user){
              alert(user.name);
            }
          });
        });
        $("#btnJson3").click(function(){
          // var user={'id':'1','name':'张三'};   // 定义js对象
          // var jsonValue=JSON.stringify(user); // 对象转换为json字符串
          // console.log(jsonValue)
          $.ajax({
            url:"${pageContext.request.contextPath}/json/wuhu1",
            method:"post",
            data:'{"id":"1","name":"张三","birthday":"2019-01-01"}',
            contentType:'application/json',
            dataType:"json",
            success:function(user){
              alert(user.name);
            }
          });
        });
        $("#btnJson4").click(function(){
          var listUser=new Array();
          var user1={"id":"1","name":"张三","birthady":"2019-01-01"};
          var user2={"id":"2","name":"李四","birthady":"2019-01-01"};
          listUser.push(user1)
          listUser.push(user2)
          $.ajax({
            url:"${pageContext.request.contextPath}/json/wuhu2",
            method:"post",
            data:JSON.stringify(listUser),
            contentType:'application/json',
            dataType:"json",
            success:function(user){
              alert(user.name);
            }
          });
        });
      })
    </script>
  </head>
  <body>
  <input type="button" value="发送单个参数json数据" id = "btnJson1"/>
  <input type="button" value="发送对象的json数据用javabean接收" id="btnJson2"/>
  <input type="button" value="发送对象的json数据用javabean接收" id="btnJson3"/>
  <input type="button" value="发送对象的json数据用javabean接收" id="btnJson4"/>
  </body>
</html>


后端

@Controller
public class JsonController {
    @RequestMapping("/json/response")
    @ResponseBody
    public User Jsonresponse(){
        User user = new User(5,"芜湖");
        return user;
    }
    @RequestMapping("/json/haha")
    @ResponseBody
    public User Jsonresponse1(){
        User user = new User(6,"haha","asfdl",new Date());
        return  user;
    }
1.以RequestParam接收
    @RequestMapping(value = "/json/response2")
    @ResponseBody
    public User Jsonresponse2(@RequestBody String name){
        User user2 = new User(2,"haha","1215122",new Date());
        System.out.println(name);
        return user2;
    }
2.javabean
    @PostMapping(value = "/json/wuhu",consumes = "application/json")
    @ResponseBody
    public User Jsonresponse3(@RequestBody User user){
        User user2 = new User(2,"haha","1215122",new Date());
        System.out.println(user);
        return user2;
    }
3.map集合
    @PostMapping(value = "/json/wuhu1",consumes = "application/json")
    @ResponseBody
    public User Jsonresponse4(@RequestBody Map<String,String> map){
        User user2 = new User(2,"haha","1215122",new Date());
        System.out.println(map);
        return user2;
    }
4.列表
    @PostMapping(value = "/json/wuhu2",consumes = "application/json")
    @ResponseBody
    public User Jsonresponse5(@RequestBody List<User> list){
        User user2 = new User(2,"haha","1215122",new Date());
        System.out.println(list);
        return user2;
    }
}


相关文章
|
设计模式 前端开发 Java
SpringMVC系列(一)之SpringMVC入门详细介绍
SpringMVC系列(一)之SpringMVC入门详细介绍
|
7月前
|
Java 容器 Spring
SpringMVC 注解配置SpringMVC
SpringMVC 注解配置SpringMVC
37 0
|
7月前
|
Java Spring 容器
SpringMVC之注解配置SpringMVC
【1月更文挑战第20天】SpringMVC之注解配置SpringMVC
86 0
|
Java 数据库 数据安全/隐私保护
SpringMVC中@ModelAttribute应用实践
SpringMVC中@ModelAttribute应用实践
77 2
|
XML JSON 前端开发
SpringMVC-Json处理
SpringMVC-Json处理
67 0
SpringMVC-Json处理
|
关系型数据库 MySQL 数据库
42SpringMVC - SpringMVC小案例
42SpringMVC - SpringMVC小案例
32 0
|
XML 前端开发 Java
springMvc8-springmvc常用注解代码
springMvc8-springmvc常用注解代码
81 0
springMvc8-springmvc常用注解代码
|
前端开发 Java Maven
SpringMVC使用注解开发
SpringMVC使用注解开发
|
JSON 前端开发 fastjson
SpringMVC的JSON处理及FastJSON的整合使用(七)下
SpringMVC的JSON处理及FastJSON的整合使用(七)
244 0
SpringMVC的JSON处理及FastJSON的整合使用(七)下
|
JSON 前端开发 Java
SpringMVC的JSON处理及FastJSON的整合使用(七)上
SpringMVC的JSON处理及FastJSON的整合使用(七)
280 0
SpringMVC的JSON处理及FastJSON的整合使用(七)上