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

Spring Boot REST接口如何阻止TEXT字段中\n转为\\n?

解决Spring Boot返回JSON时换行符被转义的问题

问题背景

项目中用Spring Boot搭建REST端点,PostgreSQL数据库里有一张带TEXT类型列的表,该字段存储的是要在前端解析为Markdown的文本,示例内容如下:

# This is my headline

This is a paragraph of text

## This is a subhead

对应的端点代码:

@GetMapping(value = "/nations")
private List<Nation> getAllNations() {
    return nationDAO.getAllNations();
}

调用端点后发现,返回的JSON里TEXT字段的\n被自动转成了\\n,示例返回结果:

[
    {
     "id": 1,
     "myTextField": "# This is my headline\\n\\nThis is a paragraph of text\\n\\n## This is a subhead",
     "population": 123456
    }
]

需要阻止这种转义,让换行符以原始的\n形式返回。

解决方案

方法1:全局配置Jackson序列化规则

Spring Boot默认用Jackson处理JSON序列化,可通过配置关闭非ASCII字符的转义(包含换行符):

application.properties配置

spring.jackson.serialization.escape-non-ascii=false

application.yml配置

spring:
  jackson:
    serialization:
      escape-non-ascii: false

方法2:针对特定字段添加注解

如果只需要处理单个字段,在实体类的目标字段上添加@JsonRawValue注解,让Jackson直接输出原始字符串内容:

public class Nation {
    private Long id;
    
    @JsonRawValue
    private String myTextField;
    
    private Long population;
    
    // 省略getter、setter方法
}

注意:使用该注解时要确保字段内容不包含未转义的双引号,避免破坏JSON结构。

方法3:自定义Jackson序列化器

要是需要更精细的转义控制,可自定义序列化器处理字符串输出:

public class UnescapedStringSerializer extends StdSerializer<String> {
    public UnescapedStringSerializer() {
        super(String.class);
    }

    @Override
    public void serialize(String value, JsonGenerator gen, SerializerProvider provider) throws IOException {
        if (value != null) {
            // 仅转义双引号,保留换行符
            gen.writeRawValue("\"" + value.replace("\"", "\\\"") + "\"");
        } else {
            gen.writeNull();
        }
    }
}

然后在实体类字段上指定该序列化器:

public class Nation {
    private Long id;
    
    @JsonSerialize(using = UnescapedStringSerializer.class)
    private String myTextField;
    
    private Long population;
    
    // 省略getter、setter方法
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 21:37:22