Hello! 欢迎来到小浪资源网!

过滤器修改响应体后前端解析JSON异常:如何避免Long类型字段转换导致前端解析失败?


过滤器修改响应体后前端解析JSON异常:如何避免Long类型字段转换导致前端解析失败?

过滤器中修改响应体后,前端解析异常

本文将解决问题:在过滤器中修改响应体后,前端无法正常解析返回的json对象,这是因为过滤器的目的是将带id的long字段转换成String再返回给前端。

代码如下:

@Component @Slf4j public class LongTypeFilter extends OncePerRequestFilter {     private final ObjectMapper objectMapper = new ObjectMapper();      @Override     protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {         // ...         // 转换数据         // ...         String modifiedResponse = rootNode.toString();         responseWrapper.getWriter().write(modifiedResponse);         responseWrapper.copyBodyToResponse();         // ...     }      private void checkAndConvertLongToString(jsonNode node) {         // ...         ((ObjectNode) node).putPOJO(fieldName, String.valueOf(field.asLong()));         // ...     } }

失败原因:前端拿到的返回数据中data字段是一个字符串,不是json对象

立即学习前端免费学习笔记(深入)”;

解决方案:使用jackson2objectmapperbuildercustomizer给jackson注册long序列化为string的序列化器,不需要从response读出来再写回去。

相关阅读