PostMan传json以及后端接收json方式方法

今天做了个新的需求,结果焦头烂额,因为之前没做过@requestBody接收前端传值的功能,煞是费脑筋。
同事的一句话点醒了我,json接收可以用String也可以是Map(我的map接收没搞定,很是丢人啊!),啥都可以接,在于解析。

JSON数据:
   {
    "billId": "201911111111",
    "userId": "****01",
    "data": [
        { "deviceId": "2",
            "parts": [
                {
                    "partsId": "21",
                    "quantity": 1                    
                },
                {
                    "partsId": "22",
                    "quantity": 11                    
                }
            ]
        },
        {
            "deviceId": "1",
            "parts": [
                {
                    "partsId": "11",
                    "quantity": 1
                },
                {
                    "partsId": "12",
                    "quantity": 11
                }
            ]
        }
    ]
}
PostMan传值

这个传值一定要事先验证是不是json格式,然后在postman里设定格式,我用的是raw,图片如下:
content-type设置传值选项

后端解析代码:
 public ResultBean<Object> partReceive(@RequestBody String str) {
        ResultBean<Object> resultBean = new ResultBean<>();
        resultBean.setCode(-1);
        Map data = (Map)JSON.parse(str);
        String billId = (String) data.get("billId");
        String userId= (String) data.get("userId");
        System.out.println("billId:"+billId);
        System.out.println("userId:"+userId);
        String data1= data.get("data").toString();
        JSONArray jsonArr = JSONArray.parseArray(data1);
        if(jsonArr.size()>0){
            for (Object value : jsonArr) {
                Map<String, Object> map2 =(JSONObject) value;
                String itemUuid = (String) map2.get("deviceId");
                String data2 = map2.get("parts").toString();
                JSONArray jsonArr1 = JSONArray.parseArray(data2);
                if (jsonArr1.size() > 0) {
                    for (Object o : jsonArr1) {
                        Map<String, Object> map1 = (JSONObject) o;
                        String partsId = (String) map1.get("partsId");
                        String quantity = map1.get("quantity").toString();
                        System.out.println(partsId);
                        System.out.println(quantity);
                    }
                }
                System.out.println(itemUuid);
            }
        } 
        resultBean.setCode(0);
        resultBean.setMsg("操作成功!");
        return resultBean;
    }

打印结果:
打印出的值
总结,写代码还是要信息,现在的还不够严谨,明天在往细致里做一下。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值