Kotlin,Jackson:无法在主要构造函数中注释@JsonCreator

Ray*_*ang 2 jackson kotlin

我想@JsonCreator使用主要构造函数进行注释,如下所示:

// error
@JsonCreator class User(
    @JsonProperty("username") var username: String,
    @JsonProperty("password") var password: String
) {
  // ...
}
Run Code Online (Sandbox Code Playgroud)

但是@JsonCreator注释给出错误“此注释不适用于目标'class'”。

使用辅助构造函数有效,但这是唯一(或最佳)方法吗?:

// works, but is there a better way?
class User @JsonCreator constructor(
    @JsonProperty("username") var username: String,
    @JsonProperty("password") var password: String
) {
  // ...
}
Run Code Online (Sandbox Code Playgroud)

Ada*_*old 6

您在这里描述的内容:

class User @JsonCreator constructor(
    @JsonProperty("username") var username: String,
    @JsonProperty("password") var password: String
) {
  // ...
}
Run Code Online (Sandbox Code Playgroud)

实际上是显式指定构造函数。您可以通过查看类声明来区分主要对象次要对象

class User constructor(/** **/) { // <-- primary

    constructor(/** ... **/) { // <-- secondary

    }

}
Run Code Online (Sandbox Code Playgroud)

如果构造函数是类标头的一部分,则它是主要构造函数,如果它是类声明的一部分(在之后{),则它是辅助构造函数。