使用@RequestBody 接收复杂实体类集合

目录
  • @RequestBody 接收复杂实体类集合
  • postman 模拟前端传递复杂对象及@RequestBody注解说明
    • 另外附带讲解一下@RequestBody 注解

@RequestBody 接收复杂实体类集合

想要在 后台接收josn返回的复杂List 直接给代码

例:

 @RequestMapping("/JsonSaveCustom")
 public ResultVO JsonSaveCustom(HttpServletRequest request, @RequestBody bean_list objList) {
  List<jsonbean> list = objList.getJsonbeans();
  List<jsonbean> list2 = objList.getJsonbeans2();
  System.out.println(list);
  System.out.println(list2);
     return new ResultVO(true);
 }

前台: 以下只给例子 页面具体的处理就不写了 你是用循环添加什么的都可以 只要数据格式正确即可

 var objList = {};
 objList.flowid = '123456';
 objList.id = 'abcdefg';
 objList.roleid = '654321';

 var jsonbeans = [];
 var input = $(".budget_tableone").find("input");
     input.each(function () {
      jsonbeans.push({"name":$(this).attr("name"),"value":$(this).val().replace(/,/g,'β')});
     });
 objList.jsonbeans = jsonbeans;

 var jsonbeans2=[];
 var table1 = $($($(".budget_tabletwo>table>tbody")[0])[0].children);
     table1.each(function (i) {
      var trList=[];
      $($(this)[0].children).each(function (j) {
       trList.push($(this).html().replace(/,/g,'β'));
      });
   jsonbeans2.push({"array":trList})//这里就是嵌套的
     });
     console.log(jsonbeans2)
     objList.jsonbeans2= jsonbeans2;
 $.ajax({
         type:'post',
         dataType: "json",
         contentType: "application/json; charset=utf-8",
         url : '你的url',
         data : JSON.stringify(objList),
         success : function(data){
         },
         error : function(){
             layeropen('2','发生意外错误!');
         }
     });

用到的实体类

/**
 * JSON转换实体类
 *
 * @author XNYLH
 *
 */
public class bean_list {
 private String flowid;
 private String id;
 private String roleid;
 private String agent;
 private String stepid;
 private List<jsonbean> jsonbeans;
 private List<jsonbean> jsonbeans2;
 private List<jsonbean> jsonbeans3;
 public List<jsonbean> getJsonbeans() {
  return jsonbeans;
 }
 public void setJsonbeans(List<jsonbean> jsonbeans) {
  this.jsonbeans = jsonbeans;
 }
 public String getFlowid() {
  return flowid;
 }
 public void setFlowid(String flowid) {
  this.flowid = flowid;
 }
 public String getId() {
  return id;
 }
 public void setId(String id) {
  this.id = id;
 }
 public String getRoleid() {
  return roleid;
 }
 public void setRoleid(String roleid) {
  this.roleid = roleid;
 }
 public String getAgent() {
  return agent;
 }
 public void setAgent(String agent) {
  this.agent = agent;
 }
 public String getStepid() {
  return stepid;
 }
 public void setStepid(String stepid) {
  this.stepid = stepid;
 }
 public List<jsonbean> getJsonbeans2() {
  return jsonbeans2;
 }
 public void setJsonbeans2(List<jsonbean> jsonbeans2) {
  this.jsonbeans2 = jsonbeans2;
 }
 public List<jsonbean> getJsonbeans3() {
  return jsonbeans3;
 }
 public void setJsonbeans3(List<jsonbean> jsonbeans3) {
  this.jsonbeans3 = jsonbeans3;
 }
}

用到的实体类

/**
 * JSON转换实体类
 *
 * @author XNYLH
 *
 */
/**
 * JSON转换实体类
 * @author XNYLH
 *
 */
public class jsonbean {
 private String id;
 private String name;
    private String value;
    private String [] array;

 public String[] getArray() {
  return array;
 }
 public void setArray(String[] array) {
  this.array = array;
 }
 public String getId() {
  return id;
 }
 public void setId(String id) {
  this.id = id;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public String getValue() {
  return value;
 }
 public void setValue(String value) {
  this.value = value;
 }
 @Override
 public String toString() {
  return "jsonbean [id=" + id + ", name=" + name + ", value=" + value + "]";
 }
}

数据格式

postman 模拟前端传递复杂对象及@RequestBody注解说明

后台需要接收的对象格式如下:

使用postman模拟请求:

{
  "name": "onion",
    "arrStr": [
        "1",
        "2",
        "3",
        "4",
        "5"
    ],
    "strList": [
        "1",
        "2",
        "3",
        "4",
        "5"
    ],
    "userInfoList": [
        {
            "id": 1,
            "userName": "jack1",
            "phone": "111",
            "address": "不哈",
            "password": "1123123",
            "createTime": ""
        },
        {
            "id": 2,
            "userName": "jack2",
            "phone": "111",
            "address": "不哈",
            "password": "1123123",
            "createTime": ""
        }
    ]
}

另外附带讲解一下@RequestBody 注解

@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。

在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。

  • 注:一个请求,只有一个RequestBody;一个请求,可以有多个RequestParam。
  • 注:当同时使用@RequestParam()和@RequestBody时,@RequestParam()指定的参数可以是普通元素、数组、集合、对象等等(即:当,@RequestBody 与@RequestParam()可以同时使用时,原SpringMVC接收参数的机制不变,只不过RequestBody 接收的是请求体里面的数据;而RequestParam接收的是key-value里面的参数,所以它会被切面进行处理从而可以用普通元素、数组、集合、对象等接收)。即:如果参数时放在请求体中,传入后台的话,那么后台要用@RequestBody才能接收到;如果不是放在请求体中的话,那么后台接收前台传过来的参数时,要用@RequestParam来接收,或则形参前什么也不写也能接收。
  • 注:如果参数前写了@RequestParam(xxx),那么前端必须有对应的xxx名字才行(不管其是否有值,当然可以通过设置该注解的required属性来调节是否必须传),如果没有xxx名的话,那么请求会出错,报400。
  • 注:如果参数前不写@RequestParam(xxx)的话,那么就前端可以有可以没有对应的xxx名字才行,如果有xxx名的话,那么就会自动匹配;没有的话,请求也能正确发送。追注:这里与feign消费服务时不同;feign消费服务时,如果参数前什么也不写,那么会被默认是@RequestBody的。

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

(0)

相关推荐

  • 使用@RequestBody传对象参数时碰到的坑

    目录 @RequestBody传对象参数时碰到的坑 我的真实代码是这样的: 也就是下面的区别: @RequestBody 的正确使用 @RequestBody接收的是一个Json对象 @RequestBody的使用 @RequestBody传对象参数时碰到的坑 工作中需要使用到http接口传一个对象数组,网上找到某博客:springmvc参数为对象,数组 但是测试还是不对,报错: 2019-02-21 23:44:37.168 WARN 34133 --- [nio-7001-exec-6] .

  • SpringMVC接收复杂集合对象(参数)代码示例

    SpringMVC在接收集合请求参数时,需要在Controller方法的集合参数里前添加@RequestBody,而@RequestBody默认接收的enctype(MIME编码)是application/json,因此发送POST请求时需要设置请求报文头信息,否则SpringMVC在解析集合请求参数时不会自动的转换成JSON数据再解析成相应的集合.以下列举接收List<String>.List<User>.List<Map<String,Object>>.

  • @RequestBody的使用详解

    提示:建议一定要看后面的@RequestBody的核心逻辑源码以及六个重要结论!本文前半部分的内容都是一些基 本知识常识,可选择性跳过. 声明:本文是基于SpringBoot,进行的演示说明. 基础知识介绍: @RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的):GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交.在后端的同一个接收方法里,@RequestBody与@Request

  • 使用@RequestBody 接收复杂实体类集合

    目录 @RequestBody 接收复杂实体类集合 postman 模拟前端传递复杂对象及@RequestBody注解说明 另外附带讲解一下@RequestBody 注解 @RequestBody 接收复杂实体类集合 想要在 后台接收josn返回的复杂List 直接给代码 例: @RequestMapping("/JsonSaveCustom") public ResultVO JsonSaveCustom(HttpServletRequest request, @RequestBod

  • Spring Data JPA映射自定义实体类操作

    目录 Spring Data JPA映射自定义实体类 JPA 配置类实体映射示例 Spring Data JPA映射自定义实体类 这个问题困扰了我2天=-=,好像也能使用 jpql解决 先说下自己的功能:查询oracle最近sql执行记录 sql很简单:[如果需要分页,需要自己手动分页,因为你使用分页工具他第一页查询不会查询rownum,第二页查询就会查询rownum,然而这个返回的List<Object[]>中的参数必须要和实体类中一一对应,所以这就有一个不可控制的属性rownum,所以我们

  • Android JSON数据与实体类之间的相互转化(GSON的用法)

    这篇文章就是示范如何用GSON把JSON数据与实体类进行相互转化,需要用到gson-2.3.1.jar这个包.直接贴代码了: import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken

  • java 后台开发中model与entity(实体类)的区别说明

    以前在做项目的时候不太了解model与entity的含义,在公司(卓~)项目中学习到了.model的字段>entity的字段,并且model的字段属性可以与entity不一致,model是用于前端页面数据展示的,而entity则是与数据库进行交互做存储用途. 举个例子: 比如在存储时间的类型时,数据库中存的是datetime类型,entity获取时的类型是Date()类型,date型的数据在前端展示的时候必须进行类型转换(转为String类型),在前端的进行类型转换则十分的麻烦,转换成功了代码也

  • springmvc接收json串,转换为实体类List方法

    开始我用List<泛型>接受json串,如下,结果list内并非泛型对象,而是JSONObject对象.这样在遍历的时候就报了转化异常的错误.我不知道为什么springmvc在处理这个的时候并没有将json对象转化为泛型对象(我认为应该能获取到,可能是配置问题或者使用不当导致的),这个错误用实际证明了java是假泛型. 如何解决呢,暂时有两种方案,第一种是使用json工具类转化json对象为泛型对象,第二种使用数组接受,然后将数组转化为list对象.代码如下下.如果哪天找到了更好的解决方案,或

  • json如何解析混合数组对象到实体类的list集合里去

    一.前言 这次项目中遇到了一个这样的需求,把下面数据解析到我下面的对象里去. json 文件 [ { "categories": [ "美食,小吃快餐" ], "coordinate": { "address": "王府井大街138号新东安广场3层328", "area": "东安市场", "area_id": "jk238eewf0k&

  • C#后端接收form-data,创建实体类教程

    目录 后端接收form-data创建实体类 C#获取FormData数据 就像这样 后端接收form-data创建实体类 public class Para_list //实体类 { public long ParemeterID { get; set; } public string Name { get; set; } public string Scope { get; set; } public string Require { get; set; } public string Bas

  • 解析ABP框架领域层中的实体类与仓储类

    领域层 实体是DDD(领域驱动设计)的核心概念之一.Eric Evans是这样描述的"很多对象不是通过它们的属性定义的,而是通过一连串的连续性事件和标识定义的"(引用领域驱动设计一书). 译者注:对象不是通过它们的属性来下根本性的定义,而应该是通过它的线性连续性和标识性定义的..所以,实体是具有唯一标识的ID且存储在数据库中.实体通常被映射成数据库中的一个表. 实体类(Entity classes) 在ABP中,实体继承自Entity类,请看下面示例: public class Per

  • Java如何实现实体类转Map、Map转实体类

    实体类转Map.Map转实体类 1.创建entity(User.java) package com.jeff.entity; public class User { private String userName; private String password; private Integer age; public User() { super(); } public User(String userName, String password, Integer age) { super();

  • Mybatis之映射实体类中不区分大小写的解决

    目录 Mybatis 映射实体类中不区分大小写 解决办法 问题解决 Mybatis的一些小细节 问题一. #{}和${}的区别是什么? 问题二. 当实体类中的属性名和表中的字段名不一样,怎么办 问题三. 模糊查询like语句该怎么写 问题四. 通常一个Xml映射文件 问题五. Mybatis是如何将sql执行结果封装为目标对象并返回的 问题六. 如何获取自动生成的(主)键值 问题七. 在mapper中如何传递多个参数 问题八. Mybatis动态sql是做什么的 问题九. Mybatis的Xml

随机推荐