排除swagger中groovy模型类的元类属性

dsf9zpds  于 2022-11-23  发布在  其他
关注(0)|答案(4)|浏览(153)

我们如何在模型中排除“groovy”类的元类属性作为响应?我有一个Jax-Rs资源,它返回一个用swagger @ApiModel注解的groovy对象。我在swagger ui中看到太多groovy特定属性。我如何从序列化中排除它?

@EqualsAndHashCode
@Document(collection = 'MongoCollection')
@CompileStatic
@ToString
@XmlRootElement
@XmlAccessorType(value = XmlAccessType.FIELD)
@ApiModel(value = "Represents a document from mongo collection")
class Foo {
..
..

}

它似乎在使用Jackson进行pogo-json序列化?如何注解我的groovy类以排除元类属性进入json序列化字符串?我尝试使用JsonIgnoreProperties注解,但没有帮助。

**@JsonIgnoreProperties(ignoreUnknown = true, value = ["MetaClass","MetaMethod"])**
polkgigr

polkgigr1#

如果使用springfox,请参见springfox issues 752,找到了解决此问题的方法:

docket.ignoredParameterTypes(groovy.lang.MetaClass.class)

代码示例如下:

@Configuration
public class SpringFoxConfig {
     @Bean
     public Docket api() {
         return new Docket(DocumentationType.SWAGGER_2)
             .ignoredParameterTypes(groovy.lang.MetaClass.class)
             .select()
             .apis(RequestHandlerSelectors.any())
             .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
             .paths(PathSelectors.any())
             .build();
        }
    }
unhi4e5o

unhi4e5o2#

这可能是swagger中的一个bug,就像https://github.com/wordnik/swagger-core/issues/519一样。我从groovy切换到了java类来处理模型对象。当我有时间的时候,我会为这个问题创建一个测试。

6vl6ewon

6vl6ewon3#

https://springdoc.org/#groovy-support
在springdoc-openapi-ui依赖项中包含此依赖项将解决较新版本中的问题。

<dependency>
      <groupId>org.springdoc</groupId>
      <artifactId>springdoc-openapi-groovy</artifactId>
      <version>1.6.13</version>
   </dependency>
t2a7ltrp

t2a7ltrp4#

将Swagger升级到版本〉= 1.3.5应该可以解决这个问题。

相关问题