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 addCompany(@RequestBody Company company){
        Map retvalMap=new LinkedHashMap();
        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 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 getEmps() {
        return emps;
    }

    public void setEmps(List 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

相关