• 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

  • 相关阅读:
    搞懂 Python 中多继承与Mixin设计模式
    Python 中的新式类和经典类的区别?
    值得收藏!15个 Pythonic 的代码示例
    windows启动nacos1.3.2
    Linux完成MySQL安装,本地连接时出现1064错误
    vagrant安装的坑
    AvaloniaUI TextBox 不能显示中文的问题解决
    [笔记] zookeeper 本地测试部署
    docker: Error response from daemon: Ports are not available
    smartsql 入门使用踩坑笔记
  • 原文地址:https://www.cnblogs.com/heyang78/p/16191950.html
Copyright © 2020-2023  润新知