今天做了个新的需求,结果焦头烂额,因为之前没做过@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;
    }

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

GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e 4 个月前
8c391e04 6 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐