jackson@JsonIgnoreProperties多个字段与Kotlin

我无法与kotlin一起使用@JsonIgnoreProperties。 我需要忽略不止一个属性,而且我看到很多教程/ SO问题,在java中,通常你会这样做:

@JsonIgnoreProperties({ "p0", "p1", "p2" }) class Example(){...} 

所以在kotlin这将是:

 @JsonIgnoreProperties(value = arrayOf( "p0", "p1", "p2" )) class Example(){...} 

JsonIgnoreProperties接口的value字段应该接受数组,因为它是这样声明的:

 public String[] value() default { }; 

但编译器抱怨并希望一个字符串,而不是一个数组。 我甚至不能重复注释,所以我应该如何忽略多个字段?

编辑:似乎是一个kotlin缺少的function,实施自1.2测试版。 可以使用value = ["p0", "p1", "p2"]作为注释。 在1.2 beta之前,可以使用@JsonIgnoreProperties("p0", "p1", "p2") ,没有办法在数组前加上value =

您可以在这里使用spread运算符 ,这就是Java to Kotlin转换器在您的示例代码中所做的工作,也是Android Studio建议的一个快速解决方案:

 @JsonIgnoreProperties(value = *arrayOf( "p0", "p1", "p2" )) class Example { ... } 

快速解决意图行动

这是可行的,因为注解参数中的数组types被转换为Kotlin中的可变参数,所以如果不从别的地方使用数组,就可以这样做:

 @JsonIgnoreProperties("p0", "p1", "p2") class Example