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

Spring REST响应中双引号被转义为\"问题求助

Spring REST返回HTML富文本时双引号被转义的解决方法

解决方案1:直接返回HTML响应(推荐)

如果接口核心是返回HTML内容,无需包装在JSON结构里,直接修改接口的响应类型为text/html,返回原始HTML字符串即可:

@GetMapping(value="/getRTFData", produces ="text/html")
public String get() {
    RTFData rtfData = // 你的数据获取逻辑
    return rtfData.getContentText();
}

这种方式下Spring会直接输出未转义的HTML内容,浏览器、Swagger或Postman都能正确解析,图片可正常渲染。

解决方案2:保持JSON格式,前端正确解析转义字符串

若必须返回JSON结构,前端拿到响应后不要把contentText当作纯文本处理,改用DOM操作或模板引擎渲染:
比如JavaScript中使用innerHTML插入内容:

// 假设response是接口返回的JSON对象
document.getElementById('rich-content').innerHTML = response.contentText;

innerHTML会自动处理转义的双引号,将其还原为HTML中的引号,从而正常渲染图片。

解决方案3:配置Jackson序列化器跳过HTML字段的转义(谨慎使用)

需要保持JSON结构且希望后端输出未转义的HTML字符串时,可给RTFData类的contentText字段添加@JsonRawValue注解:

public class RTFData {
    @JsonRawValue
    private String contentText;

    // getter、setter方法
}

注意:该注解会让Jackson直接将字段内容作为JSON的一部分输出,不做任何转义。因此contentText必须是合法的JSON片段(不能包含未转义的换行符、单引号等JSON非法字符),否则会导致整个JSON响应格式错误,引发前端解析失败。

问题原因

你设置了produces ="application/json",Spring默认使用Jackson将RTFData对象序列化为JSON字符串。根据JSON规范,字符串中的双引号必须用反斜杠转义,因此响应中的contentText会出现\"。调试时看到的是Java对象中的原始值,而响应是符合JSON规范的转义后内容,图片无法渲染的本质是前端未正确处理转义后的字符串,或者你无需将HTML包装在JSON中返回。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 06:02:06