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
分类:
Java.SpringBoot
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需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 安全驾驶技巧