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

本文详细介绍了如何使用Swagger配置API文档,特别是针对返回类型为Map<String,List<VersionPushStatisticResp>>时的配置方法,通过使用alternateTypeRules解决Swagger页面的报错问题。

解决:

@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进行解析。

 

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

 

强哥叨逼叨

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

### C++ Ordered Map 使用说明 在 C++ 中,`std::map` 是一种关联容器,默认情况下会按照键的升序存储元素对 (key-value pairs),因此也被称为有序映射 (ordered map)[^1]。 #### 创建和初始化 `std::map` 可以创建不同类型的 `std::map` 并对其进行初始化: ```cpp #include <iostream> #include <map> int main() { std::map<int, int> myMap; // 插入元素 myMap.insert(std::make_pair(1, 2)); myMap.emplace(3, 4); // 初始化列表方式 std::map<std::string, double> anotherMap = {{"pi", 3.14}, {"e", 2.7}}; } ``` #### 访问元素 通过下标运算符或成员函数访问已存在的键对应的值;如果使用下标操作不存在的键,则会在映射中自动插入新条目并赋予默认初始值。 ```cpp // 下标访问 myMap[5]; if(myMap.find(key) != myMap.end()){ value_type val = (*it).second; } auto it = myMap.find("some_key"); if(it != myMap.end()) { std::cout << "Value: " << it->second << '\n'; } else { std::cout << "Key not found\n"; } ``` #### 遍历 `std::map` 遍历整个集合可以通过迭代器完成,也可以利用基于范围的for循环来简化语法糖。 ```cpp // 迭代器遍历 for(auto& elem : myMap){ std::cout << elem.first << ": " << elem.second << "\n"; } // 范围基for循环 for(const auto& [key,value] : myMap){ std::cout << key << "->" << value << "\n"; } ``` #### 删除元素 删除单个指定键所对应的数据项或者清除全部数据项。 ```cpp // 单个移除 size_t erased_count = myMap.erase(some_key); // 清空所有项目 myMap.clear(); ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值