You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Jackson保留换行前的空白字符?

问题

我的应用设有Web文本输入框,输入的数据存入数据库后,再次展示时开头的空白字符消失,怀疑是Jackson ObjectMapper导致该问题。我使用SpringBoot 3.0.6版本,相关场景显示:WebUI输入界面输入了带开头空白的文本,数据库中存储的内容保留了空白,Java应用映射至UI-DTO前的调试器界面也能看到空白,但浏览器显示界面中开头空白消失。当前ObjectMapper配置代码如下:

@Bean
public ObjectMapper objectMapper() {
    var objectMapper = new ObjectMapper();
    objectMapper.registerModule(new JavaTimeModule());
    objectMapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);
    objectMapper.setSerializationInclusion(Include.NON_NULL);

    var p = new DefaultPrettyPrinter();
    Indenter i = new DefaultIndenter("  ", "\n");
    p.indentArraysWith(i);
    p.indentObjectsWith(i);
    objectMapper.setDefaultPrettyPrinter(p);

    return objectMapper;
}

请问如何配置ObjectMapper以保留空白字符?

解决方案

  • 显式关闭Jackson的TRIM_STRING_VALUES特性,阻止自动修剪字符串首尾空白:
    在你的ObjectMapper配置方法中添加以下代码:

    objectMapper.disable(MapperFeature.TRIM_STRING_VALUES);
    
  • 检查项目中是否存在自定义的字符串序列化器或反序列化器,确保这些组件没有对字符串执行trim操作。

  • 额外排查:Jackson默认不会自动修剪字符串空白,若添加上述配置后问题仍存在,建议查看接口返回的原始JSON数据(可通过浏览器开发者工具的网络面板查看),确认空白是否真的在序列化阶段丢失。如果JSON数据中存在空白,那问题可能出在前端渲染逻辑(比如HTML默认会合并连续空白字符,可通过CSS的white-space: pre-wrap等属性保留空白)。

内容的提问来源于stack exchange,提问作者user286974

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 10:12:04