Java解析post请求复杂嵌套json数据

案例一:(两层嵌套)

请求数据: 

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);
    }

}

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值