Jackson @JsonIgnoreProperties与Kotlin

时间:2017-10-30 15:47:04

标签: jackson 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缺失的功能,从1.2 beta开始实现。可以使用value = ["p0", "p1", "p2"]进行注释。在1.2 beta之前,可以使用@JsonIgnoreProperties("p0", "p1", "p2"),无法使用value =预先添加数组

1 个答案:

答案 0 :(得分:4)

您可以在这里使用spread operator,这是Java to Kotlin转换器对您的示例代码所做的事情,以及Android Studio建议的快速修复:

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

The quick fix intention action

这是有效的,因为注释参数中的数组类型在Kotlin中转换为varargs,所以如果你没有在其他地方使用数组,你可以这样做:

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