2017-03-06 47 views
0

我使用傑克遜ObjectMapper序列化POJO。我在POJO中嵌套了字段。如:序列化類MyClass傑克遜忽略頂級域的系列化如果所有嵌套字段爲空

public class MyClass { 
    private A a; 
    private int i; 
    //getters and setters 
} 

public class A { 
    private String s; 
    //getters and setters 
} 

我想,如果字符串snull,整個酒店A沒有被序列化。也就是說,如果字符串snull,我所要的輸出是: {"myClass":{"i":10}}

但我正在逐漸{"myClass":{"A":{},"i":10}}作爲輸出來代替。

我已經設置NON_EMPTY系列化包含(mapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY)),但它並沒有解決問題

+0

的可能的複製[如何告訴傑克遜序列化過程中忽略一個字段,如果其值爲null?](HTTP ://stackoverflow.com/questions/11757487/how-to-tell-jackson-to-ignore-a-field-during-serialization-if-its-value-is-null) – Arpit

回答

0

AFAIK你不能用標準的註解做到這一點,但以這種方式改變,你應該做的伎倆MyClass.getA()方法。

public A getA() { 
    if (a.getS() == null) 
     return null; 
    return a; 
    } 
0

你只需要添加@JsonInclude(JsonInclude.Include.NON_NULL)

@JsonInclude(JsonInclude.Include.NON_NULL) 
public class MyClass extends Serializable { 
    private A a; 
    private int i; 
    //getters and setters 
} 

public class A extends Serializable{ 
    private String s; 
    //getters and setters 
} 
相關問題