Spring Rest Docs未处理HTML标签,JSON格式化问题求助
解决Spring Rest Docs中JSON无法通过
<pre>正确格式化的问题 遇到这种<pre>标签被转义成HTML实体的情况,通常是Asciidoctor默认会转义文档中的HTML标签导致的,这里有几个靠谱的解决办法:
1. 用Asciidoctor原生代码块语法替代手动写<pre>
Asciidoctor本身就支持代码块渲染,完全不需要手动写<pre>标签,还能自带语法高亮。要展示JSON的话,直接这么写:
[source,json] ---- { "name": "test", "value": 123 } ----
生成的HTML会自动转换成带<pre><code>结构的格式化代码块,JSON格式完美保留,还会有语法高亮效果,这也是Spring Rest Docs官方推荐的方式。
2. 用pass:[...]让Asciidoctor不转义HTML标签
如果你一定要手动使用<pre>标签,可以把包含<pre>的内容用pass:包裹起来,告诉Asciidoctor直接传递这段内容不做转义:
pass:[<pre>{ "name": "test", "value": 123 }</pre>]
这样生成的HTML里就会保留原始的<pre>标签,JSON也能正常格式化显示。
3. 利用Spring Rest Docs内置Snippet生成格式化JSON
如果你的JSON是请求体或响应体的示例,更推荐直接用Spring Rest Docs的API生成,比如在测试代码里指定请求体内容:
mockMvc.perform(post("/api/endpoint") .contentType(MediaType.APPLICATION_JSON) .content("{\"name\":\"test\",\"value\":123}")) .andDo(document("create-endpoint", requestBody() .content(ContentFormat.JSON, "{\"name\":\"test\",\"value\":123}") ));
这样Rest Docs会自动帮你生成格式化好的JSON代码块,不需要手动在adoc里写任何HTML标签,既规范又不容易出错。
内容的提问来源于stack exchange,提问作者user1883212
相关产品推荐
相关产品推荐

