我是杰克逊的初学者。我正在尝试--
public class A {
boolean property1;
String property2;
// public getters and setters for both
}
public abstract class MixIn {
@JsonIgnore
boolean property1;
}
ObjectMapper mapper = new ObjectMapper();
mapper.addMixInAnnotations(A.class, MixIn.class);
现在
String result = mapper.writeValueAsString(new A())
给我这样的结果-{“ property2”:“ value”}正确,但是如果尝试再次在对象中转换结果-:
mapper.readValue(result, A.class);
我正在将property1返回到对象A--
A {property1 : false, property2 : value}
为什么objectMapper不再忽略该属性。注意-我尝试直接将@JsonIgnore放在property1上,效果很好,但是我必须为此使用MixIn。我也尝试过将JsonIgnore放在MixIn的getter和setter上,但是那也不起作用。
答案 0 :(得分:0)
好的。我知道了@JsonIgnore表示该属性不会写在序列化的字符串中,但是如果要反序列化任何字符串,则该属性将具有默认值,如果是布尔值,则始终为false,这是我在尝试时发现的添加更多属性,以便混入实际上起作用。只是我认为它会以某种神奇的方式从对象本身中删除该属性。 (我知道这很傻。)