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

排除swagger中groovy模型类的元类属性,groovy,jackson,swagger,swagger-ui,Groovy,Jackson,Swagger,Swagger Ui,如何在“groovy”类的模型中排除元类属性作为响应?我有一个Jax Rs资源,它返回一个用swagger@ApiModel注释的groovy对象。 我在swagger ui中看到了太多groovy特有的属性。如何将其从序列化中排除 @EqualsAndHashCode @Document(collection = 'MongoCollection') @CompileStatic @ToString @XmlRootElement @XmlAccessorType(value = XmlAc

如何在“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 {
..
..

}

@EqualsAndHashCode
@文档(集合='MongoCollection')
@编译的
@托斯特林
@XmlRootElement
@XmlAccessorType(值=XmlAccessType.FIELD)
@ApiModel(value=“表示来自mongo集合的文档”)
福班{
..
..
}
它似乎在使用Jackson进行pogo json序列化?如何注释我的groovy类以将元类属性排除在json序列化字符串中? 我尝试使用JsonIgnoreProperties注释,但没有任何帮助

@JsonIgnoreProperties(ignoreUnknown = true, value = ["MetaClass","MetaMethod"])
@JsonIgnoreProperties(ignoreUnknown=true,value=[“元类”,“元方法])这可能是一个bug。
我从groovy切换到java类,以便从现在开始处理模型对象。当我有时间时,将致力于创建此问题的测试。

将Swagger升级到>=1.3.5版本应该可以解决此问题。

如果使用springfox,请参阅springfox,找到解决此问题的方法:

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

您是否尝试过使用小写的
元类
而不是
元类
?是的。不支持小写。可能相关?我确保在我的任何依赖项中都没有使用jackson-1。类路径包含所有jackon-2 jar。启用调试显示“com.wordnik.swagger.converter.ModelPropertyParser”类没有忽略元类属性。这看起来像是swagger问题。当我对Rest服务进行单元测试时,Json返回了JsonIgnoreProperties字段。它们在响应中为“null”。但是,当使用swagger ui查看服务文档时,同一类的json表示并没有忽略groovy元类字段。这应该标记为正确答案