springfox(swagger2) does not work with GsonHttpMessageConverterConfig

前端 未结 5 1881
耶瑟儿~
耶瑟儿~ 2020-12-08 17:42

What I am trying to build is a spring-boot (v1.2.3) application and expose my Rest API with SpringFox(swagger2) v2.0.0

my Swagger Spring config



        
5条回答
  •  独厮守ぢ
    2020-12-08 18:22

    solved the issue by myself:

    the issue was with serializing this class:

    package springfox.documentation.spring.web.json;
    
    import com.fasterxml.jackson.annotation.JsonRawValue;
    import com.fasterxml.jackson.annotation.JsonValue;
    
    public class Json {
      private final String value;
    
      public Json(String value) {
        this.value = value;
      }
    
      @JsonValue
      @JsonRawValue
      public String value() {
        return value;
      }
    }
    

    to serialize it correct I implemented a SpringfoxJsonToGsonAdapter and added it to my gson config:

    adapter:

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

    gson config:

    @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();
        }
    }
    

提交回复
热议问题