在接收对方推送数据时,格式为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();
}
亲测可用,有啥问题,欢迎大家指出
本文介绍了一种不使用@RequestBody注解而直接从HttpServletRequest中获取并解析JSON数据的方法,适用于接收前端推送的数据,包括单个对象及列表。
3945

被折叠的 条评论
为什么被折叠?



