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