• 0
  • 0
分享
  • JSON数据传输参数——软件测试圈
  • 恬恬圈 2022-12-14 10:52:26 字数 2388 阅读 1416 收藏 0

概述

前面我们说过,现在比较流行的开发方式为异步调用。前后台以异步方式进行交换,传输的数据使用的是JSON,所以前端如果发送的是JSON数据,后端该如何接收?

对于JSON数据类型,我们常见的有三种:

  • json普通数组([“value1”,“value2”,“value3”,…])

  • json对象({key1:value1,key2:value2,…})

  • json对象数组([{key1:value1,…},{key2:value2,…}])

对于上述数据,前端如何发送,后端如何接收?

JSON普通数组

步骤1:pom.xml添加依赖

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.0</version>
</dependency>

步骤2:PostMan发送JSON数据

1.png

步骤3:开启SpringMVC注解支持

在SpringMVC的配置类中开启SpringMVC的注解支持,这里面就包含了将JSON转换成对象的功能。

@Configuration
@ComponentScan("com.itheima.controller")
//开启json数据类型自动转换
@EnableWebMvc
public class SpringMvcConfig {
}

步骤4:参数前添加@RequestBody

//使用@RequestBody注解将外部传递的json数组数据映射到形参的集合对象中作为数据
@RequestMapping("/listParamForJson")
@ResponseBody
public String listParamForJson(@RequestBody List<String> likes){
    System.out.println("list common(json)参数传递 list ==> "+likes);
    return "{'module':'list common for json param'}";
}

步骤5:启动运行程序

4.png

JSON普通数组的数据就已经传递完成,下面针对JSON对象数据和JSON对象数组的数据该如何传递呢?

JSON对象数据

我们会发现,只需要关注请求和数据如何发送?后端数据如何接收?

请求和数据的发送:

{
"name":"itcast",
"age":15
}

3.png

后端接收数据:

@RequestMapping("/pojoParamForJson")
@ResponseBody
public String pojoParamForJson(@RequestBody User user){
    System.out.println("pojo(json)参数传递 user ==> "+user);
    return "{'module':'pojo for json param'}";

启动程序访问测试

4.png

说明:

address为null的原因是前端没有传递数据给后端。

如果想要address也有数据,我们需求修改前端传递的数据内容:

{
"name":"itcast",
"age":15,
    "address":{
        "province":"beijing",
        "city":"beijing"
    }
}

再次发送请求,就能看到address中的数据

5.png

JSON对象数组

集合中保存多个POJO该如何实现?

请求和数据的发送:

[
    {"name":"itcast","age":15},
    {"name":"itheima","age":12}
]

后端接收数据:

@RequestMapping("/listPojoParamForJson")
@ResponseBody
public String listPojoParamForJson(@RequestBody List<User> list){
    System.out.println("list pojo(json)参数传递 list ==> "+list);
    return "{'module':'list pojo for json param'}";
}

启动程序访问测试:

7.png

小结

SpringMVC接收JSON数据的实现步骤为:

(1)导入jackson包

(2)使用PostMan发送JSON数据

(3)开启SpringMVC注解驱动,在配置类上添加@EnableWebMvc注解

(4)Controller方法的参数前添加@RequestBody注解

知识点1:@EnableWebMvc

名称@EnableWebMvc
类型配置类注解
位置SpringMVC配置类定义上方
作用开启SpringMVC多项辅助功能

知识点2:@RequestBody

名称@RequestBody
类型形参注解
位置SpringMVC控制器方法形参定义前面
作用将请求中请求体所包含的数据传递给请求参数,此注解一个处理器方法只能使用一次

@RequestBody与@RequestParam区别

区别

  • @RequestParam用于接收url地址传参,表单传参【application/x-www-form-urlencoded】

  • @RequestBody用于接收json数据【application/json】

应用

  • 后期开发中,发送json格式数据为主,@RequestBody应用较广

  • 如果发送非json格式数据,选用@RequestParam接收请求参数


作者:小杰不想秃头

原文链接:https://blog.csdn.net/weixin_51020122/article/details/124654195

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 在 Vue 3 的 Composition API 中,采用了 setup() 作为组件的入口函数。在结合了 TypeScript 的情况下,传统的 Vue.extend 等定义方法无法对此类组件给出正确的参数类型推断,这就需要引入 defineComponent() 组件包装函数,其在 rfc 文档中的说明为:https://composition-api.vuejs.org/api.html#setup interface Data {   [key: string]: unknown }   interface&nbs...
            0 0 1050
            分享
          • Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。Wireshark能获取HTTP,也能获取HTTPS,但是不能解密HTTPS,所以Wireshark看不懂HTTPS中的内容,如果是处理HTTP,HTTPS还是用Fiddler,其他协议比如TCP,UDP就用Wireshark.。第一部分:数据抓包打开“Wireshark”,选择下面抓包来源并点击“捕获”,如图:点击“开始”进行抓包,如图:抓包完成后点击左上角的“停止”图标即可结束...
            0 0 1304
            分享
          •   测试用例方法  1.等价类设计测试用例  具体步骤:  1)明确需求  2)划分有效和无效等价类  ·有效等价类:满足需求的  · 无效等价类:不满足需求的     -规则     - 长度     - 类型     - 是否为空     - 是否重复  3)设计测试用例  · 典型应用场景:输入框  2.边界值设计测试用例  定义:是等价类的一种补充,对输入或输出的边界进行测试的一种黑盒测试方法。  上点:边界上的点。  内点:边...
            0 0 1540
            分享
          •   Part 01、  什么是数据质量管理   数据质量管理,是DAMA数据管理知识体系指南中数据治理领域非常重要的一部分(图1 所示),主要是指对数据从计划、获取、存储、共享、维护、应用、消亡生命周期的每个阶段里可能引发的各类数据质量问题,进行识别、度量、监控、预警等一列管理活动,并通过改善和提高组织的管理水平使得数据质量获得进一步提高。  Part 02、 数据质量问题原因及评价标准   数据在计划、获取、存储、共享、维护等各个环节都有可能引发数据质量问题,主要原因分为几下几个方面:  数据不完整:由于企业信息系统的孤立使用,各个业务系统或模块按照各自的需要录...
            0 0 883
            分享
          •  1、简介 麦德龙: - 麦德龙是一家面向HoReCa(酒店、餐厅和餐饮)行业客户的国际批发公司,业务遍及30多个国家,在全球拥有超过9.5万名员工。 - 它旗下Metro和Makro 两个品牌经营着661家批发门店(截至2022年9月30日)。麦德龙超市 - 麦德龙超市是一家零售批发超市集团, - 在麦德龙和万客隆(仅限欧洲)品牌旗下拥有多家麦德龙现购自运商场, - 是德国股票指数DAX的成分公司,世界500强之一,分店遍布32个国家。麦德龙仓储式超市 - 麦德龙仓储式超市是将超市和仓储合二为一的零售业态。&nb...
            0 0 1596
            分享
      • 51testing软件测试圈微信