为什么Swagger的api-docs响应包含在额外的JSON对象中?

时间:2016-01-27 10:11:34

标签: spring spring-boot swagger swagger-2.0

我通过包含依赖项来添加swagger到我的Spring Boot应用程序:

<dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-swagger2</artifactId>
  <version>2.3.1</version>
</dependency>

并添加配置类:

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket api(){
        return new Docket(DocumentationType.SWAGGER_2)
            .select()
            .apis(RequestHandlerSelectors.any())
            .paths(Predicates.or(PathSelectors.regex("...")))
            .build()
            .apiInfo(apiInfo());
    }

    private ApiInfo apiInfo() {
        return new ApiInfo(...);
    }
}

我现在可以访问/v2/api-docs并获取一些似乎描述我的API的JSON。但是,JSON包含在另一个JSON对象中,如下所示(缩写): {"value":"{\"swagger\":\"2.0\",\"info\":...}

不需要{"value": "..."}对象,并在swagger-ui中导致错误。 PetStore示例没有这个额外的级别。这个错误?还是配置问题?

PS:我还为那个

创建了一个github issue

1 个答案:

答案 0 :(得分:0)

https://github.com/springfox/springfox/issues/1156的那些人指出了我正确的方向。问题如下:

我正在使用Gson代替杰克逊来解散/序列化Json。当类型springfox.documentation.spring.web.json.Json的对象被序列化时,包含的注释被杰克逊认为但被Gson忽略。