【问题标题】:Swagger /v2/api-docs JSON Generated IncorrectlySwagger /v2/api-docs JSON 生成不正确
【发布时间】:2020-06-11 21:38:24
【问题描述】:

我有一个新的 Spring Boot 项目,我正在设置它,并在另一个类似项目之后对其进行了建模。对于新项目的 swagger-ui.html 页面,我们会收到一条通用的“No operations defined in spec!”消息,并且没有 Swagger 文档。

我已将问题追溯到生成的 v2/api-docs JSON 文件。

对于我的工作项目,我们有预期的 swagger JSON,并且 HTML 页面生成正确

{
    swagger: "2.0",
    info: {},
    basePath: "/",
    tags: [],
    paths: {},
    definitions: {}
}

对于新的、损坏的项目,有一个 value 键,所有常见的招摇 JSON 都是该键的字符串化值。

{
    value: "{"swagger":"2.0","info":{"...}"
}

这些项目实际上都具有相同版本的 Gradle、Java、Swagger 以及我看过的任何其他版本。 SwaggerConfigs 看起来也一样。

是否存在一些未记录的设置或 API 交互会导致此 Swagger JSO 生成错误?

【问题讨论】:

    标签: json swagger swagger-2.0 api-doc


    【解决方案1】:

    您可以重新配置 JsonSerializer,如下所述:

    适配器:

    public class SpringfoxJsonToGsonAdapter implements JsonSerializer<Json> {
    
        @Override
        public JsonElement serialize(Json json, Type type, JsonSerializationContext context) {
            final JsonParser parser = new JsonParser();
            return parser.parse(json.value());
        }
     } 
    

    Gson 配置:

    @Configuration
    public class GsonHttpMessageConverterConfig {
    
        @Bean
        public GsonHttpMessageConverter gsonHttpMessageConverter() {
            GsonHttpMessageConverter converter = new GsonHttpMessageConverter();
            converter.setGson(gson());
            return converter;
        }
    
        private Gson gson() {
            final GsonBuilder builder = new GsonBuilder();
            builder.registerTypeAdapter(Json.class, new SpringfoxJsonToGsonAdapter());
            return builder.create();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-26
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-20
      • 1970-01-01
      相关资源
      最近更新 更多