2019独角兽企业重金招聘Python工程师标准>>>
在Swagger 里面默认用的是Jackson 序列化
对于我们属性全是用的FastJson的来说的话 很痛苦
参数名全成了默认属性名
Swagger提供的默认注解 ApiModelProperty 的name属性也是完全不起作用的
如果项目没有配置Jackson的话 swagger是运行不起来的
贴配置:
@Configuration @EnableSwagger2 public class Swagger2 { @Autowired private ApplicationContext applicationContext; @PostConstruct public void setObjectMapper() { ObjectMapper objectMapper = new ObjectMapper(); SimpleModule module = new SimpleModule(); objectMapper.registerModule(module); objectMapper.setAnnotationIntrospector(new JacksonAnnotationIntrospector() { @Override public boolean isAnnotationBundle(Annotation ann) { if (ann.annotationType() == JSONField.class) { return true; } return super.isAnnotationBundle(ann); } @Override public PropertyName findNameForSerialization(Annotated a) { PropertyName nameForSerialization = super.findNameForSerialization(a); if (nameForSerialization == null || nameForSerialization == PropertyName.USE_DEFAULT) { JSONField jsonField = _findAnnotation(a, JSONField.class); if (jsonField != null) { return PropertyName.construct(jsonField.name()); } } return nameForSerialization; } @Override public PropertyName findNameForDeserialization(Annotated a) { PropertyName nameForDeserialization = super.findNameForDeserialization(a); if (nameForDeserialization == null || nameForDeserialization == PropertyName.USE_DEFAULT) { JSONField jsonField = _findAnnotation(a, JSONField.class); if (jsonField != null) { return PropertyName.construct(jsonField.name()); } } return nameForDeserialization; } }); ObjectMapperConfigured objectMapperConfigured = new ObjectMapperConfigured(applicationContext, objectMapper); applicationContext.publishEvent(objectMapperConfigured); } @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.")) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("在线接口文档") .contact("[email protected]") .version("3.2") .build(); } }
Jackson配置包含
JacksonAnnotationIntrospector
主要是用来对注解JSONFiled的支持
加上后的效果