2013-02-06 39 views
5

Tôi đang xây dựng JSON từ cây đối tượng Java bằng cách sử dụng Jackson ObjectMapper. Một số đối tượng Java của tôi là các bộ sưu tập và đôi khi chúng có thể rỗng. Vì vậy, nếu chúng trống rỗng, ObjectMapper sẽ tạo cho tôi: "attributes": [], và tôi muốn loại trừ các loại mảng JSON trống đó khỏi kết quả của tôi. My ObjectMapper cấu hình hiện tại:Loại trừ các mảng trống khỏi Jackson ObjectMapper

SerializationConfig config = objectMapper.getSerializationConfig(); 
config.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL); 
config.set(SerializationConfig.Feature.WRAP_ROOT_VALUE, true); 

Từ this post Tôi đã đọc mà tôi có thể sử dụng:

config.setSerializationInclusion(JsonSerialize.Inclusion.NON_DEFAULT); 

Nhưng điều đó đang tạo ra cho tôi một lỗi:

Caused by: java.lang.IllegalArgumentException: Class com.mycomp.assessments.evaluation.EvaluationImpl$1 has no default constructor; can not instantiate default bean value to support 'properties=JsonSerialize.Inclusion.NON_DEFAULT' annotation. 

Vậy làm thế nào tôi nên tránh những mảng trống để xuất hiện trong kết quả của tôi?

Trả lời

9

Bạn nên sử dụng:

config.setSerializationInclusion(JsonSerialize.Inclusion.NON_EMPTY); 

cho Jackson 1 hoặc

config.setSerializationInclusion(JsonInclude.Include.NON_EMPTY); 

cho Jackson 2

+0

Tôi đang sử dụng Jackson: 1.8.5, nhưng không có tùy chọn như: JsonSerialize. CLOSsion.NON_EMPTY. Chỉ có: LUÔN, NON_NULL, NON_DEFAULT –

+0

Cố định một loại (Bao gồm chứ không phải là Gián), nhưng bạn cần ít nhất Jackson 1.9 để sử dụng nó tôi sợ. – jgm

+0

Cảm ơn, tôi đã cập nhật phiên bản Jackson và thats fine now :) –

Các vấn đề liên quan