忽略Jackson的序列化特定字段

Edi*_*enz 58 java serialization json jackson

我正在使用杰克逊图书馆.

我想在序列化/反序列化时忽略特定字段,例如:

public static class Foo {
    public String foo = "a";
    public String bar = "b";

    @JsonIgnore
    public String foobar = "c";
}
Run Code Online (Sandbox Code Playgroud)

应该给我:

{
foo: "a",
bar: "b",
}
Run Code Online (Sandbox Code Playgroud)

但是我得到了:

{
foo: "a",
bar: "b",
foobar: "c"
}
Run Code Online (Sandbox Code Playgroud)

我正在用这段代码序列化对象:

ObjectMapper mapper = new ObjectMapper();
String out = mapper.writeValueAsString(new Foo());
Run Code Online (Sandbox Code Playgroud)

我的类中字段的真实类型是Log4J Logger类的实例.我究竟做错了什么?

Edi*_*enz 88

好的,所以出于某种原因,我错过了这个答案.

以下代码按预期工作:

@JsonIgnoreProperties({"foobar"})
public static class Foo {
    public String foo = "a";
    public String bar = "b";

    public String foobar = "c";
}

//Test code
ObjectMapper mapper = new ObjectMapper();
Foo foo = new Foo();
foo.foobar = "foobar";
foo.foo = "Foo";
String out = mapper.writeValueAsString(foo);
Foo f = mapper.readValue(out, Foo.class);
Run Code Online (Sandbox Code Playgroud)