java - 如何让 Jackson 忽略构造函数属性

标签 java jackson lombok

我正在尝试让 Jackson 反序列化

{
    "test": 2018
}

SomeJavaClass:
 private final Test test

但我想使用 Project Lombok 来制作我的测试类。然而,Lombok 使用 ConstructorProperties 注释该类,由于某种原因,这使得 Jackson 失败。

我的类(class)如下所示:

@Value
public class SomeJavaClass {
    Test test;
}


@Value
public class Test{
    String value;
}

测试被分解为:

public class Test {
    int value;

    @java.beans.ConstructorProperties({"value"})
    public Test(final int value) {
        this.value = value;
    }

    public int getValue() {
        return this.value;
    }

    public boolean equals(final Object o) {
        if (o == this) {
            return true;
        }
        if (!(o instanceof Test)) {
            return false;
        }
        final Test other = (Test) o;
        if (this.getValue() != other.getValue()) {
            return false;
        }
        return true;
    }

    public int hashCode() {
        final int PRIME = 59;
        int result = 1;
        result = result * PRIME + this.getValue();
        return result;
    }

    public String toString() {
        return "Test(value=" + this.getValue() + ")";
    }
}

是否有可能让 Jackson 以某种方式忽略构造函数属性?

最佳答案

我还认为这里的问题不是注释@java.beans.ConstructorProperties({"value"})

根据您的delombok,您似乎有一组注释可以阻止默认构造函数的形成。

所以也许你可以通过添加@NoArgsConstructor来摆脱这个问题。如果没有默认构造函数并且没有 @JsonCreator ,您将收到如下错误:

com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of org.example.spring.jackson.JacksonTest$TestClass (although at least one Creator exists): cannot deserialize from Object value (no delegate- or property-based Creator)

关于java - 如何让 Jackson 忽略构造函数属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53261915/

相关文章:

java - 使用属性而不是包装集合反序列化 XML 响应

Java + Lombok + Guava + 验证

java - 如果我在gradle文件中添加了Lombock的依赖项,它将无法构建

Java:接口(interface)中的 protected 方法

java - 对集合的所有元素断言相同的条件

java - 迭代后跳过一行

java - 如何访问 JsonPropertyOrder

java - 从 Java 调用 .js 文件中的 JavaScript 函数

java - 使用列表值映射解析 Yaml 时出现 Jackson 异常

java - 使用 Jackson 处理器 spring mvc 3.1 的空指针异常