2017-10-30 1 views
1

Ich habe Probleme mit @ JsonIgnoreProperties mit Kotlin. Ich brauche mehr als eine Eigenschaft zu ignorieren, und ich sehe viele tutorial/SO Fragen, wo, mit Java, in der Regel Sie so etwas tun:Jackson @JsonIgnoreProperties mehrere Felder mit Kotlin

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

So in Kotlin wäre es:

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

das value Feld der JsonIgnoreProperties Schnittstelle sollte Array akzeptieren, da es auf diese Weise erklärt hat:

public String[] value() default { }; 

Aber der Compiler beschwert und eine Zeichenfolge wollen, kein Array . Ich kann die Annotation nicht einmal duplizieren, also wie soll ich mehr als ein Feld ignorieren?

EDIT: Scheint wie es ist ein Kotlin fehlt Feature, seit 1.2 Beta implementiert. Es wird möglich sein, value = ["p0", "p1", "p2"] für Anmerkungen zu verwenden. Vor 1.2 Beta möglich, es ist @JsonIgnoreProperties("p0", "p1", "p2") zu verwenden, um keine Möglichkeit, das Array prepend mit value =

Antwort

2

Sie die spread operator hier verwenden können, das, was Konverter die Java Kotlin ist tut mit Ihrem Beispielcode, und auch das, was als ein Android Studio schlägt vor, schnelle Lösung: Dieses

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

The quick fix intention action

funktioniert, weil Array-Typen in Annotation Parameter umgewandelte erhalten zu varargs in Kotlin, so dass Sie nur dies tun könnte, wenn Sie nicht ein Array von woanders verwenden:

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