SpringBoot如何接收前端传来的json数据
作者:IT__learning
这篇文章主要介绍了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参数。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。