public class ParamFromJsonHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver { @Override public boolean supportsParameter(MethodParameter parameter) { return parameter.hasParameterAnnotation(ParamFromJson.class); } private static JSONObject jsonObject; @Override public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception { ParamFromJson requestJson = parameter.getParameterAnnotation(ParamFromJson.class); String typeName = parameter.getParameter().getParameterizedType().getTypeName(); HttpServletRequest request = webRequest.getNativeRequest(HttpServletRequest.class); BufferedReader reader = request.getReader(); StringBuilder sb = new StringBuilder(); char[] buf = new char[1024]; int rd; while ((rd = reader.read(buf)) != -1) { sb.append(buf, 0, rd); } String param = sb.toString(); if (StringUtils.isNotBlank(param)) { try { jsonObject = JSONObject.parseObject(param); } catch (Exception e) { Object o = Class.forName(typeName).getConstructor(String.class).newInstance(param); return o; } } String value = requestJson.value(); param = jsonObject.get(value).toString(); Object o = Class.forName(typeName).getConstructor(String.class).newInstance(param); return o; } }
Post方法接受单个参数
最新推荐文章于 2023-08-16 15:15:43 发布