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

本文将解决问题:在过滤器中修改响应体后,前端无法正常解析返回的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类型字段转换导致前端解析失败?的详细内容,更多请关注慧达安全导航其它相关文章!

点赞(0)

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部