Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 忽略使用Jackson序列化时的特定字段_Java_Json_Serialization_Jackson - Fatal编程技术网

Java 忽略使用Jackson序列化时的特定字段

Java 忽略使用Jackson序列化时的特定字段,java,json,serialization,jackson,Java,Json,Serialization,Jackson,我正在使用杰克逊图书馆 我想在序列化/反序列化时忽略特定字段,例如: public static class Foo { public String foo = "a"; public String bar = "b"; @JsonIgnore public String foobar = "c"; } class YourClass { public int ignoreThis() { return 0; } } 你应该给我: { foo:

我正在使用杰克逊图书馆

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

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

    @JsonIgnore
    public String foobar = "c";
}
class YourClass {
  public int ignoreThis() { return 0; }    
}
你应该给我:

{
foo: "a",
bar: "b",
}
但我得到了:

{
foo: "a",
bar: "b",
foobar: "c"
}
我正在用以下代码序列化对象:

ObjectMapper mapper = new ObjectMapper();
String out = mapper.writeValueAsString(new Foo());

我的类上字段的实际类型是Log4J Logger类的一个实例。我做错了什么?

好吧,因为某种原因我错过了

以下代码按预期工作:

@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);

还值得注意的是,此解决方案使用了反序列化功能。未知属性失败:

引用自

你可以使用Jackson Mixins。例如:

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

    @JsonIgnore
    public String foobar = "c";
}
class YourClass {
  public int ignoreThis() { return 0; }    
}
用这个调味品

abstract class MixIn {
  @JsonIgnore abstract int ignoreThis(); // we don't need it!  
}
为此:

objectMapper.addMixIn(YourClass.class, MixIn.class);