案例一:(两层嵌套)
请求数据:
ps:一个对象包含一个对象;
方式一:使用map
代码段:
@RestController
@RequestMapping("test")
public class testDemo {
@PostMapping("demo")
public void test(@RequestBody Map<String,Map<String,Object>> mapMap){
Map<String, Object> data = mapMap.get("data");
System.out.println("data:"+data);
Object name = mapMap.get("data").get("name");
System.out.println("name:"+name);
}
}
控制台打印:
方式二:使用fastjson
我试过,用了回车,发现解析为空;
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.60</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
@Data
public class Test {
private String name;
private Integer age;
}
@RestController
@RequestMapping("test")
public class testDemo {
@PostMapping("demo")
public void test(String str){
Object data = JSON.parseObject(str).get("data");
Test test = JSONObject.parseObject(data.toString(), Test.class);
System.out.println(test);
}
}
这里解析出来的就是一个对象了。
当然也可以用HttpServletRequest request接收参数,不过会多一个步骤:String str = request.getParameter("str");
案例二:(三层嵌套,并包含list对象)
请求数据:
ps:一个对象中包含list对象,list对象包含对象及属性;
代码段:其实很简单,用实体类对象互相嵌套; 一个大的对象,包几个小对象
package com.lucifer.pojo;
import lombok.Data;
import java.util.List;
@Data
public class Test2 {
public List<A> alist;
public List<B> blist;
}
package com.lucifer.pojo;
import lombok.Data;
@Data
public class A{
public String sex;
}
package com.lucifer.pojo;
import lombok.Data;
@Data
public class B{
public C c;
public String name;
public Integer age;
}
package com.lucifer.pojo;
import lombok.Data;
@Data
public class C{
public String EnName;
}
用一个大的实体类对象去接收;
@RestController
@RequestMapping("test")
public class testDemo {
@PostMapping("demo")
public void test(@RequestBody Test2 test2){
List<A> alist = test2.getAlist();
System.out.println("alist:"+alist);
List<B> blist = test2.getBlist();
System.out.println("blist:"+blist);
}
}