OpenAPI 在 Spring Boot 应用程序中转义 JSON 响应

Tom*_*ing 6 spring-boot openapi-generator

我最近尝试为我的 Sprint Boot 应用程序生成 OpenAPI 文档。我将以下几行添加到我的pom.xml

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-ui</artifactId>
    <version>1.2.30</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

但是当我在本地主机上点击 swagger-ui URL 时,我得到了这个页面 在此输入图像描述

我检查了 JSON,/v3/api-docs并得到了以下开头的响应:

"{\"openapi\":\"3.0.1\",\"info\":{\"title\":\"OpenAPI definition\",\"version\":\"v0\"},\"servers\":[{\"url\":\"https://localhost:8900/tds\",
Run Code Online (Sandbox Code Playgroud)

我可以看到正在指定该openapi字段,但看起来整个响应都是字符串化的,而不仅仅是 JSON。由于 OpenAPI 似乎没有任何配置,我认为它是从我的 Spring Boot 配置中的某些内容获取的,但我不知道在哪里。

Tob*_*ott 5

我有同样的问题。就我而言,我已经configureMessageConverters(List<HttpMessageConverter<?>> converters)在扩展类中重写了WebMvcConfigurer. Springdoc 使用在那里配置的转换器。

首先,我首先将一些自定义转换器添加到转换器中,然后将StringHttpMessageConverter. canWrite(Class<?> clazz, MediaType mediaType)两个转换器的方法都true返回clazz=String.classmediaType= application/json。因此使用第一个,它将 JSON 作为字符串转义。

当我更改它以便StringHttpMessageConverter首先添加 时,会使用该值,并序列化 JSON 对象而不转义。