解决swagger返回map复杂结构不能解析 Resolver error at definitions

  • Post author:
  • Post category:其他


解决:

@Configuration
public class SwaggerConfig {

    @Autowired
    private TypeResolver typeResolver;

    @Bean
    public Docket controllerApi() {
//        ParameterBuilder ticketPar = new ParameterBuilder();
//        List<Parameter> pars = new ArrayList<>();
//        ticketPar.name("token").description("token")
//                .modelRef(new ModelRef("string")).parameterType("header")
//                .required(false).build(); //header中的token参数非必填,传空也可以
//        pars.add(ticketPar.build());    //根据每个方法名也知道当前方法在设置什么参数

        return new Docket(DocumentationType.SWAGGER_2)
                .alternateTypeRules(//解决返回对象为Map<String, List<VersionPushStatisticResp>>时,Swagger页面报错
                        AlternateTypeRules.newRule(
                                typeResolver.resolve(Map.class, String.class, typeResolver.resolve(List.class, VersionPushStatisticResp.class)),
                                typeResolver.resolve(Map.class, String.class, WildcardType.class), Ordered.HIGHEST_PRECEDENCE),
                        )
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.ltjh.adc.controller"))
                .paths(PathSelectors.any())
                .build()
//                .globalOperationParameters(pars)
                .apiInfo(new ApiInfoBuilder()
                        .title("接口文档")
                        .description("项目名")
                        .version("1.0.0")
                        .build());
    }


}

没错,重点就是加上alternateTypeRules进行解析。

关注公众号获取更多内容,有问题也可在公众号提问哦:


强哥叨逼叨

叨逼叨编程、互联网的见解和新鲜事



版权声明:本文为seanxwq原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。