2017-03-06 1 views
0

Ich benutze Jackson ObjectMapper, um ein POJO zu serialisieren. Ich habe Felder im POJO verschachtelt. ZB: Serialisierung Klasse MyClassJackson ignorieren Serialisierung von Top-Level-Feld, wenn alle verschachtelten Felder null sind

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

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

Ich möchte, dass, wenn String snull ist, A das gesamte Objekt nicht serialisiert bekommt. Das heißt, wenn String s ist null, möchte ich die Ausgabe sein: {"myClass":{"i":10}}

Aber ich bin immer {"myClass":{"A":{},"i":10}} als die Ausgabe statt.

ich gesetzt haben NON_EMPTY für die Serialisierung Aufnahme (mapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY)), aber es löst nicht das Problem

+0

Mögliches Duplikat von [Wie Jackson sagen zu ignorieren ein Feld bei der Serialisierung, wenn sein Wert ist null?] (Http hinzufügen : //stackoverflow.com/questions/11757487/how-to-tell-jackson-to-ignore-a-field-during-serialization-if-its-value-is-null) – Arpit

Antwort

0

AFAIK Sie dies mit Standard-Annotationen nicht tun können, aber MyClass.getA() Verfahren auf diese Weise zu ändern, sollten Sie den Trick.

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

Sie müssen nur @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 
} 
Verwandte Themen