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,图片如下:
后端解析代码:
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; }
打印结果: 总结,写代码还是要信息,现在的还不够严谨,明天在往细致里做一下。
上一篇:
IDEA上Java项目控制台中文乱码