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

 

posted @   逆火狂飙  阅读(85)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
历史上的今天:
2020-04-25 ElasticsSearch初装 环境Win10
2019-04-25 【高中数学/基本不等式】已知:x>0,y>-1,且x+y=1 求:(x^2+3)/x+y^2/(y+1)的最小值为?
2018-04-25 【高中数学/极值/基本不等式】已知正数a,b满足a+4b+2ab=6,则a+4b的最小值为?
2018-04-25 【Nodejs】cheerio简单示例
2018-04-25 【Nodejs】nimble或async并不能保证程序串行执行,回调是回避不了的坑
2015-04-25 安全驾驶技巧
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东
点击右上角即可分享
微信分享提示