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
相关产品推荐
相关产品推荐

