杰克逊与建造者模式
Jackson with Builder Pattern
我已经看到很多关于使用 jackson to serialize/deserialize java objects using builder patter 的问题,但是,我不明白为什么下面的代码不起作用。我正在使用 Jackson 版本 2.5.4
@JsonDeserialize(builder = User.Builder.class)
public class User {
private String name;
private User(Builder builder) {
this.name=builder.name;
}
@JsonPOJOBuilder(buildMethodName = "build")
public static class Builder {
private String name;
public Builder name(String name) {
this.name = name;
return this;
}
public User build() {
return new Learner(this);
}
}
}
尝试输出字符串表示总是打印一个空列表{}
默认情况下,@JsonPOJOBuilder
期望构建器方法以 with
前缀开头。
您应该在注释中覆盖它:@JsonPOJOBuilder(withPrefix = "")
你还应该用@JsonProperty
注释标记name
字段,或添加getter,或使用JacksonFeatureAutoDetect功能;否则 Jackson 不会将 name
视为 JSON 属性。
我已经看到很多关于使用 jackson to serialize/deserialize java objects using builder patter 的问题,但是,我不明白为什么下面的代码不起作用。我正在使用 Jackson 版本 2.5.4
@JsonDeserialize(builder = User.Builder.class)
public class User {
private String name;
private User(Builder builder) {
this.name=builder.name;
}
@JsonPOJOBuilder(buildMethodName = "build")
public static class Builder {
private String name;
public Builder name(String name) {
this.name = name;
return this;
}
public User build() {
return new Learner(this);
}
}
}
尝试输出字符串表示总是打印一个空列表{}
默认情况下,@JsonPOJOBuilder
期望构建器方法以 with
前缀开头。
您应该在注释中覆盖它:@JsonPOJOBuilder(withPrefix = "")
你还应该用@JsonProperty
注释标记name
字段,或添加getter,或使用JacksonFeatureAutoDetect功能;否则 Jackson 不会将 name
视为 JSON 属性。