SpringBoot如何接收前端传来的json数据

目录
  • SpringBoot接收前端传来的json数据
    • 使用POJO
    • 使用Map接收
    • 使用POJO和Map接收的比较
    • PO和VO相结合
  • SpringBoot接收json入参
  • 总结

SpringBoot接收前端传来的json数据

当前端传来json数据时,后端有两种方式可以接收:使用POJO和Map进行接收。

前端json数据:

{
    id:121,      //数字
    name:"lhj",     //字符串
    scoreList:[     //对象
                {Java:95},  
                {Python:98},
                {C++:94}
                ]
        }

使用POJO

若前端传递过来的数据刚好和我们的bean实体对象属性一致,则可以使用对象的形式接收。

后端实体类

@Component
public class Score {
    private int id;
    private String name;
    private List<ScoreList> scoreList;
}

后端Controller

@PostMapping("/student/score")
public void getScore(@RequestBody Score score){
    System.out.println(score);
    }
  • 前端数据和bean对象属性要一致
  • 必须使用@RequestBody注解

使用Map接收

若前端传递过来的数据很复杂,没有对应的POJO与其对应,就可以用Map进行接收。

后台Controller

@PostMapping("/lhj/getdata")
public void getData(@RequestBody Map<String,Object>map){
    System.out.println(map);
    }

对于Map<String,Object>,值的类型建议设置为Object,这样可以使Map能接收各种类型的数据,如字符串、数字、数组和对象等。

使用POJO和Map接收的比较

1、map的优点:

  • 灵活性更强,易扩展,耦合度低;
  • 代码简洁;
  • MyBatis查询的返回结果本身就是Map,效率可能会比返回JavaBean高。

2、map的缺点

  • JavaBean的数据在编译期就会对其进行校验,如果出错会直接提示。而Map的数据则需要到sql层才会进行处理检验。因此如果map的参数名称写错、参数值如果多传乱传只能到sql层才会被发现。
  • Map中所拥有的参数个数、类型、每个参数代表的含义对外不透明,团队开发及后期维护难度大

3、JavaBean的优点:

  • 面向对象的良好诠释;
  • 数据结构清晰,便于团队开发和后期维护;
  • 代码足够健壮,可以排除掉编译期错误;

4、javabean的缺点:

  • 代码量增多,大量时间去封装用到的表对象。
  • 可能会影响开发效率。

PO和VO相结合

  • 创建PO与数据库字段对应,用于对数据库的操作;
  • 创建VO用于封装和前端打交道的数据,使用VO可以避免使用Map

SpringBoot接收json入参

最近做一个项目,给前端vue工程提供数据接口,部门经理希望通过json格式来传递参数。

接口项目是用的springboot,所以直接使用controller里配置的path就能访问到对应的方法

示例如下:

vue调用的方法如下,可见我们传了2个参数,一个configid,一个configname

//通过json传参
var url=“http://localhost/jsonparam”;
var sendData={“configid”:55,
“configname”:“000”
};
this.$http.jsonp(url,{params : sendData}).then(function (res) {
this.msg=res.data.configName;
});

服务接口端代码:

controller方法中,入参前加@RequestParam 注解 ,value和前端传的json字段对应上

@RequestMapping(value="/jsonparam", method = RequestMethod.GET,produces="application/json;charset=UTF-8")
public   ConfigVo getjsonpparam(@RequestParam(value="configid",required=true)  Long id,@RequestParam(value="configname",required=true) String name) {
    ConfigVo vo = service.getConfigById(id);   
    return vo;
}

这样使用,就能接收前台传来的json参数。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • springboot如何去获取前端传递的参数的实现

    本文主要讨论spring-boot如何获取前端传过来的参数,这些参数主要有两大类,一类是URL里的参数,一个是请求body里的参数 url里的参数 通过url里传过来的参数一般有三种方式,下面我们来看一下 路径参数 路径参数就是说在请求路径里携带了几个参数,比如有一个查询banner详情的接口,/v2/banner/123,这里的123就是参数,可以表示banner的ID. 下面我们设计了一个简陋的接口,来演示路径参数的获取 @RestController @RequestMapping(val

  • SpringBoot实现前后端、json数据交互以及Controller接收参数的几种常用方式

    目录 前言 获取参数的几种常用注解 一.请求路径参数get请求 二.Body参数POST请求 四.HttpServletRequest 五.参数校检 最终选择交互方式 参考文献 总结 前言 现在大多数互联网项目都是采用前后端分离的方式开发,前端人员负责页面展示和数据获取,后端负责业务逻辑处理和接口封装.当与前端交互的过程当中,常用json数据与前端进行交互,这样想取出前端传送过来的json数据的时候,就需要用到@RequestBody这个注解.@RequestBody注解用于读取http请求的内

  • 详解Springboot之接收json字符串的两种方式

    第一种方式.通过关键字段@RequestBody,标明这个对象接收json字符串.还有第二种方式,直接通过request来获取流.在spring中,推荐使用. 代码地址 https://gitee.com/yellowcong/springboot-demo/tree/master/springboot-json 项目结构 其实项目里面没啥类容,就是一个控制器和pom.xml配置 配置fastjson 添加fastjson的依赖到pom.xml中 <dependency> <groupI

  • SpringBoot如何接收前端传来的json数据

    目录 SpringBoot接收前端传来的json数据 使用POJO 使用Map接收 使用POJO和Map接收的比较 PO和VO相结合 SpringBoot接收json入参 总结 SpringBoot接收前端传来的json数据 当前端传来json数据时,后端有两种方式可以接收:使用POJO和Map进行接收. 前端json数据: {     id:121,      //数字     name:"lhj",     //字符串     scoreList:[     //对象       

  • 详解如何在Node.js的httpServer中接收前端发送的arraybuffer数据

    最近使用了protobuf进行数据交互,发送在node.js接收前端的二进制数据出现了数据错误等问题.后来发现思路上面的问题,在req.on('data',()=>{})事件中的处理不适当才引发数据错乱.借此发 我先直接贴正确接收二进制数据代码 const server = http.createServer((req, res) => { if(req.method==='OPTIONS'){ res.setHeader("Access-Control-Allow-Origin&q

  • SpringBoot @PostMapping接收HTTP请求的流数据问题

    目录 @PostMapping接收HTTP请求的流数据 关于@PostMapping注解解析 总结 @PostMapping接收HTTP请求的流数据 @PostMapping("/test") public String pushMessage(@RequestBody byte[] data) throws Exception { String json = URLDecoder.decode(new String(data, DEFAULT_CHARSET), DEFAULT_CH

  • springboot @RequestBody 接收字符串实例

    目录 springboot @RequestBody 接收字符串 @RequestBody 接收字符串 向接口传送 application/json 格式的数据 向接口传送 text/plain 格式的数据 替代 @RequestBody 的办法 @RequestBody接收前端传来的json值为空 springboot @RequestBody 接收字符串 springboot 2.1.1.RELEASE @RequestBody 接收字符串 @RequestMapping(method =

  • PHP给前端返回一个JSON对象的实例讲解

    解决问题:用php做后台时,如何给前端发起的AJAX请求返回一个JSON格式的"对象": 说明:我本身是一个前端,工作久了之后发现要是不掌握一门后端开发语言的话,总感觉有点无力.最近在边做自己的个人网站边学习php,在写验证码验证的时候,需要给前端发起的验证请求返回一个便于操作的数据,于是自然就想到了返回一个JSON格式的"对象". 在网上查了很多写法,无奈大多不行,最后在stackoverflow上终于找到原因并改写代码,亲测有用,于是记录下来,希望对后来人有所帮

  • SpringMVC JSON数据交互及RESTful支持实现方法

    JSON概述 JSON(JavaScript Object Notation,JS对象标记)是一种轻量级的数据交换格式,最近几年才流行起来.JSON是基于JavaScript的一个子集,使用了C.C++.C#.Java. JavaScript.Per. Python等其他语言的约定,采用完全独立于编程语言的文本格式来存储和表示数据.这些特性使JSON成为理想的数据交互语言,它易于阅读和编写,同时也易于机器解析和生成. 与XML一样,JSON也是基于纯文本的数据格式.初学者可以使用JSON传输一个

  • SPRINGMVC JSON数据交互如何实现

    json是一种前后端分离思想所使用的存储数据的格式,然而使用Springmvc这个框架在对前台参数处理时会遇到一些问题,下面我们来看看如何进行数据交互 jsp页面: @RequestBody注解实现接收http请求的json数据,将json数据转换为java对象进行绑定 @ResponseBody注解实现将Controller方法返回java对象转换为json响应给客户端. 加上@ResponseBody注解,就不会走视图解析器,不会返回页面,目前返回的json数据.如果不加,就走视图解析器,返

  • Go处理json数据方法详解(Marshal,UnMarshal)

    json数据格式 参见json数据格式说明. 如果没操作过json数据,建议先看下上面的文章,有助于理解本文后面的内容. Go json包 Marshal():Go数据对象 -> json数据UnMarshal():Json数据 -> Go数据对象 func Marshal(v interface{}) ([]byte, error) func Unmarshal(data []byte, v interface{}) error 构建json数据 Marshal()和MarshalInden

  • 浅谈springMVC接收前端json数据的总结

    对于json对象类型(即JsonObject)的数据,springMVC主要有以下几种方式接收: 1.通过Map接收 @RequestMapping(value = "/getAllStudio" ) public void getAllStudio(@RequestBody Map<String, Integer> map ) { JSONObject json = new JSONObject(); Integer page = map.get("page&q

随机推荐