杰克逊ObjectMapper json忽略问题

时间:2018-08-10 16:37:36

标签: java jackson-databind

我是杰克逊的初学者。我正在尝试--

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上,但是那也不起作用。

1 个答案:

答案 0 :(得分:0)

好的。我知道了@JsonIgnore表示该属性不会写在序列化的字符串中,但是如果要反序列化任何字符串,则该属性将具有默认值,如果是布尔值,则始终为false,这是我在尝试时发现的添加更多属性,以便混入实际上起作用。只是我认为它会以某种神奇的方式从对象本身中删除该属性。 (我知道这很傻。)