使用json传递信息时接收不到的问题
使用Json传递信息时接收不到的问题
1、问题描述
当我们使用json进行请求传递时,发现使用request.getParameter("data")
读取的数据为null
问题代码如下:
@PostMapping(value = "/callback")public void callback(HttpServletRequest request, HttpServletResponse response) {String parameter = request.getParameter("data");System.out.println(parameter);}
2、问题解释
- 提交的是JSON数据而非表单数据
- 使用
getParameter()
无法直接获取JSON请求体中的值
3、解决方法
使用request.getReader()
去获取值然后转换成JSONObject即可
@PostMapping(value = "/callback")
public void callback(HttpServletRequest request, HttpServletResponse response) throws IOException {// System.out.println("nihao");String parameter = request.getParameter("data");// 对于JSON请求体,需要手动读取和解析BufferedReader reader = request.getReader();StringBuilder sb = new StringBuilder();String line;while ((line = reader.readLine()) != null) {sb.append(line);}String jsonBody = sb.toString();// 使用JSON库解析JSONObject jsonObject = JSON.parseObject(jsonBody);System.out.println(jsonObject);String value = jsonObject.getString("data");System.out.println(value);
}
可用看见值已经读取出来了