2015-01-15 12 views
6

boş değerler seri/çalışmıyor, ama yine de ben kullanıyorum serializeboş değerleri@JsonInclude (Include.NON_NULL) jackson sınıf/pojo üzerinde ek açıklama yerleştirilir ve aynı zamanda mapper yapılandırmış

Hazırda Bekleme 4.3.7Final ve Jackson 2.4.4. Kaldırılan alıcı ve ayarlayıcılar

@JsonInclude(Include.NON_NULL) 
@Entity 
@Table 
public class School { 

    @Id 
    @GeneratedValue 
    private int id; 

    @OneToMany(cascade=CascadeType.ALL,fetch= FetchType.LAZY) 
    private List<Student> students; 

    @OneToMany(cascade=CascadeType.ALL,fetch= FetchType.LAZY) 
    private List<Employee> staff; 

} 

JSONMapper:

@Component 
public class JSONMapper extends ObjectMapper { 
/** 
    * 
    */ 
    private static final long serialVersionUID = -3131980955975958812L; 

//ref http://blog.pastelstudios.com/2012/03/12/spring-3-1-hibernate-4-jackson-module-hibernate/ 

    public JSONMapper() { 

     Hibernate4Module hm = new Hibernate4Module(); 
     registerModule(hm); 
     configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); 
     configure(SerializationFeature.INDENT_OUTPUT , false); 
     configure(MapperFeature.DEFAULT_VIEW_INCLUSION, false); 
     setSerializationInclusion(Include.NON_NULL); 
    } 
} 

Çıktı:

{"id":1,"students":null,"staff":null} 

cevap

7

yerine JsonInclude.NON_EMPTY kullanmayı deneyin koleksiyonları tembel

Pojo yüklü bulunmaktadır.

+0

Bir liste var ve boş olduğunu gösterdiğinden boş eklemek istiyorum. Ama null, yüklü olmadığı anlamına gelir. Temelde hazırda tembel nesneyle mücadele ediyor. Vekil göstermek istemiyorum. –

+0

Her zaman boş değerler yerine boş değerler kullanmalısınız. Bunun nedeni, hazırda beklemede olan bir çocuğun olmadığı durumlarda bile Hazırda Bekletme'nin her zaman proxy kullanmasıdır. Bu, ilk kez Ana nesneyi oluşturduğunuzda boş değeriniz olduğu tek zamandır. –

2

Projeye karşı bir hata bildirmek isteyebilirsiniz; Bu, tembel yüklü koleksiyonların (özel işleme gerektiren ve varsayılan olanı geçersiz kılan) ele alınmasının uygun katılım kontrolleri yapmaması olabilir.

İlgili konular