过滤器中修改响应体后,前端解析异常
本文将解决问题:在过滤器中修改响应体后,前端无法正常解析返回的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读出来再写回去。
以上就是过滤器修改响应体后前端解析JSON异常:如何避免Long类型字段转换导致前端解析失败?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号