我正在尝试从请求中提取json参数,但我不能。 通过servletRequest中的getParameter方法,我可以得到post参数。 json参数没有任何名称,所以请求.getParameter(“?”)我无法填写问号
答案 0 :(得分:2)
如果你准备了一个像json这样的确切结构的java类,请执行:
@RequestMapping(...)
public mycontrollerfunc(@RequestBody YourJsonClass body){}
如果没有,并且您希望将json作为字符串,请执行:
@RequestMapping(...)
public mycontrollerfunc(@RequestBody String body){}
修改强>
如果您需要从无法使用@RequestBody
并且只能访问HttpServletRequest
的方法中提取请求正文(您称之为“Json参数”),则可以执行以下操作:
String jsonFromRequestBody = CharStreams.toString(request.getReader());
在这种情况下,请求必须为HttpServletRequest
,因此如果您使用的是Filter
,则可能需要进行投射,例如:
HttpServletRequest request = (HttpServletRequest) req;