接口接收raw(JSON)格式的数据,使用注解@RequestBody不起作用

本文介绍了一种不使用@RequestBody注解而直接从HttpServletRequest中获取并解析JSON数据的方法,适用于接收前端推送的数据,包括单个对象及列表。

在接收对方推送数据时,格式为raw(JSON)类型数据,接口使用注解@RequestBody不起作用

可以使用如下方式:

String data = getbody(request);
PlatformInfo bean = new Gson().fromJson(data, PlatformInfo.class);

不使用注解@RequestBody,直接从request中拿数据,下面是getbody方法

public String getbody(HttpServletRequest request) {
	    StringBuilder stringBuilder = new StringBuilder();
	    String body = null;
	    BufferedReader bufferedReader = null;
	    try {
	        request.setCharacterEncoding("UTF-8");
	        InputStream inputStream = request.getInputStream();
	        if (inputStream != null) {
	            bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"UTF-8"));
	            char[] charBuffer = new char[128];
	            int bytesRead = -1;
	            while ((bytesRead = bufferedReader.read(charBuffer)) > 0) {
	                stringBuilder.append(charBuffer, 0, bytesRead);
	            }
	        } else {
	            stringBuilder.append("");
	        }
	    } catch (IOException e) {
	        e.printStackTrace();
	    } finally {
	        if (bufferedReader != null) {
	            try {
	                bufferedReader.close();
	            } catch (IOException e) {
	                e.printStackTrace();
	            }
	        }
	    }

	    body = String.valueOf(stringBuilder);
	    return body;
	}

还有一种情况是前端返回的是list,后端接收的方式,使用

List<TestBean> bean = JSONArray.parseArray(data, TestBean.class);
@RequestMapping(value = "/test")
    public ResultVo saveLibraryTable(@RequestBody String data) throws Exception{
        List<TestBean> bean = JSONArray.parseArray(data, TestBean.class);

        //TestBean testBean= new Gson().fromJson(data, TestBean.class);

        return RVUtils.succ();
    }

  

亲测可用,有啥问题,欢迎大家指出

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值