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;
    }
}


相关文章
|
1月前
|
存储 前端开发 Java
Springboot使用参数解析器HandlerMethodArgumentResolver,解析请求头里的数据
HandlerMethodArgumentResolver 是 Spring MVC 中的一个接口,它允许你自定义方法参数的解析过程。当处理请求时,Spring MVC 需要将请求中的信息映射到控制器方法的参数上,而 HandlerMethodArgumentResolver 允许你在这个过程中进行自定义操作。
|
10月前
|
XML JSON 前端开发
SpringMVC-Json处理
SpringMVC-Json处理
49 0
SpringMVC-Json处理
|
SQL JSON 前端开发
SpringMvc+Spring+MyBatis+Maven+Ajax+Json注解开发
本文章的目标 完成对数据库中表的一条记录进行修改 MySql的Sql语句: UPDATE `demossmtest`.`orders` SET `name` = '电脑AS', `foondname` = '华为OS', `ordertime` = '2022.6.9', `count` = 3456, `price` = 3452.09, `amount` = 1234.09 WHERE `id` = 6
|
存储 编解码 Java
springMvc27-get乱码解决
springMvc27-get乱码解决
78 0
springMvc27-get乱码解决
|
Java Maven 网络架构
【SpringBoot WebFlux 系列】WebFlux 之 Path 参数解析与 url 映射
接下来我们将进入 WebFlux 系列教程,努力使用最简明的语言,来介绍一下 WebFlux 的基本玩法,让各位小伙伴可以顺畅的切换和使用 WebFlux 来体验反应式编程的魅力 本文将主要介绍 WebFlux 提供 web 接口时的 url 匹配,以及对应的 path 参数解析
359 0
【SpringBoot WebFlux 系列】WebFlux 之 Path 参数解析与 url 映射
|
JSON 前端开发 Java
SpringMVC的JSON处理及FastJSON的整合使用(七)上
SpringMVC的JSON处理及FastJSON的整合使用(七)
223 0
SpringMVC的JSON处理及FastJSON的整合使用(七)上
|
JSON 前端开发 fastjson
SpringMVC的JSON处理及FastJSON的整合使用(七)下
SpringMVC的JSON处理及FastJSON的整合使用(七)
209 0
SpringMVC的JSON处理及FastJSON的整合使用(七)下
|
前端开发 Java Spring
springMVC框架-认识springMVC《一》
springMVC框架-认识springMVC《一》
115 0
springMVC框架-认识springMVC《一》
|
Web App开发 XML 前端开发
SSM-SpringMVC-23:SpringMVC中初探异常解析器
  ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------     本篇博客要讲的是异常解析器,SimpleMappingExceptionResolver简单映射异常解析器 可以处理系统的异常   如果出现系统异常,跳转到某个页面的时候,就可以使用它   案例如下:   一,创建俩个jsp页面:     success.
1062 0
SSM-SpringMVC-19:SpringMVC中请求和响应的乱码解决
   ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------   配置一道拦截器即可解决乱码 配置方式如下:   在web.xml中:   CharacterEncoding org.
851 0