2016-01-27 3 views
0

я добавил чванство к моему Spring приложения загрузки, включив зависимость:Почему ответ Swagger api-docs завернут в дополнительный объект JSON?

<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 и получить JSON, который, кажется, чтобы описать мой API , Тем не менее, JSON, завернутый в другой объект JSON, как это (сокращенно): {"value":"{\"swagger\":\"2.0\",\"info\":...}

{"value": "..."} Объект не требуется, и приводит к ошибкам в развязность-интерфейса. Пример PetStore не имеет этого дополнительного уровня. Это ошибка? Или проблема с конфигурацией?

PS: Я также создал github issue для этого

ответ

0

Парней в https://github.com/springfox/springfox/issues/1156 указал мне в правильном направлении. Проблема заключается в следующем:

Я использую Gson вместо Jackson для де-/сериализации Json. Когда объект типа springfox.documentation.spring.web.json.Json становится сериализованным, включенная аннотация рассматривается Джексоном, но игнорируется Gson.

Смежные вопросы