• SpringBoot中控制器如何接纳前台传来的含列表数据


    要让控制器接纳前台传来的分层含列表数据,做法同接纳不分层的对象是一种做法。

    【前台传来的数据】

    数据格式:Content-Type:application/json

    数据内容:

    {"name":"Microsoft","emps":[{"name":"andy","age":28},{"name":"Bill","age":38},{"name":"Cindy","age":48}]}

    【控制器代码】

    package com.hy.action;
    
    import com.hy.entity.Ds;
    import com.hy.entity.test.Company;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.util.LinkedHashMap;
    import java.util.List;
    import java.util.Map;
    
    @RestController
    public class TestCtrl {
        @RequestMapping(value="/addCompany", method= RequestMethod.POST)
        public Map<String,Object> addCompany(@RequestBody Company company){
            Map<String,Object> retvalMap=new LinkedHashMap<String,Object>();
            retvalMap.put("Company", company);
            return retvalMap;
        }
    }

    这段代码的关键是Company类的书写,只要其内部的属性和传来的json文一致,json文就能正确转化为对象。

    【Company类代码】

    package com.hy.entity.test;
    
    import java.util.List;
    
    public class Company {
        private String name;
    
        private List<Emp> emps;
    
        public String toString(){
            StringBuilder sb=new StringBuilder();
    
            sb.append("Company name="+name);
            for(Emp emp:emps){
                sb.append(emp);
            }
    
            return sb.toString();
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public List<Emp> getEmps() {
            return emps;
        }
    
        public void setEmps(List<Emp> emps) {
            this.emps = emps;
        }
    }

    【Emp类代码】

    package com.hy.entity.test;
    
    public class Emp {
        private String name;
        private int age;
    
        public String toString(){
            return "employee name="+name+" age="+age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    }

    【输出】

    {
        "Company": {
            "name": "Microsoft",
            "emps": [
                {
                    "name": "andy",
                    "age": 28
                },
                {
                    "name": "Bill",
                    "age": 38
                },
                {
                    "name": "Cindy",
                    "age": 48
                }
            ]
        }
    }

    【总结】

    传入的对象分层又带链表不要紧,只要匹配的对象属性和json文一一对应就无忧。

    END

  • 相关阅读:
    [LeetCode] 500. Keyboard Row 键盘行
    [LeetCode] 502. IPO 上市
    [LeetCode] 495. Teemo Attacking 提莫攻击
    [LeetCode] 655. Print Binary Tree 打印二叉树
    [LeetCode] 654. Maximum Binary Tree 最大二叉树
    [LeetCode] 637. Average of Levels in Binary Tree 二叉树的层平均值
    Dubbo 在maven项目中的应用
    前后端分离springmvc和RESTful理解
    一个相对通用的JSON响应结构,其中包含两部分:元数据与返回值
    MAC OS查看端口占用情况及杀死进程
  • 原文地址:https://www.cnblogs.com/heyang78/p/16191950.html
Copyright © 2020-2023  润新知