杰克逊与建造者模式

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 属性。