2010-03-24 16 views
7

Giả sử tôi có các đối tượng như một doanh nghiệp với một danh sách các đối tượng địa chỉ, và một đơn đặt hàng có một doanh nghiệp.Có thể định cấu hình Jackson-Json Mapper để loại trừ các thuộc tính dựa trên đối tượng mà nó đang tuần tự hóa?

Có thể định cấu hình để khi Thứ tự được sắp xếp không, nó không bao gồm danh sách địa chỉ từ đối tượng Doanh nghiệp và khi doanh nghiệp được đăng, nó bao gồm danh sách?

Tôi đang sử dụng ajax để lấy dữ liệu cho RIA và khi làm việc với Đơn hàng tôi thực sự không quan tâm đến dữ liệu địa chỉ, nhưng khi giao dịch với Doanh nghiệp, tôi muốn danh sách.

Tôi cũng đang sử dụng Hibernate để lưu giữ lâu dài vì vậy đây thực sự là một tối ưu hóa hiệu quả và hiệu suất.

Trả lời

8

Nếu tôi hiểu câu hỏi đúng, có, tôi nghĩ JSON Views cho Jackson sẽ cho phép điều này. Về cơ bản, bạn sẽ tạo hai chế độ xem khác nhau (các cấu hình) cho cùng một loại và chọn loại nào để sử dụng cho tuần tự hóa.

5

Bạn có thể sử dụng JsonIgnore Annotation bỏ qua Địa chỉ danh sách trong serialization và tắt việc sử dụng các chú thích trong ObjectMapper 's SerializationConfig khi tuần tự một Business. Tất nhiên, điều này có nghĩa là các chú thích khác mà bạn có thể sử dụng cũng bị bỏ qua. Không hoàn hảo, nhưng bạn có thể tìm thấy một giải pháp tốt hơn nhìn vào điều này, hy vọng nó sẽ giúp (rõ ràng).

ObjectMapper mapper = new ObjectMapper(); 
mapper.getSerializationConfig().disable(Feature.USE_ANNOTATIONS); 
0

Có, bạn có thể làm điều đó. Tất cả những gì bạn cần là khai báo Danh sách Địa chỉ là thuộc tính tạm thời trong đối tượng kinh doanh của bạn.

Sau đó, thêm đoạn mã sau vào jsonConfig của bạn:

jsonConfig.setIgnoreTransientFields(true); 
-1
@JsonIgnore 

được sử dụng để bỏ qua tính năng mà bạn không muốn chuyển đổi sang json.

public class UserDocument { 

    private long id; 

    private String documentUrl; 

    @JsonIgnore 
    private byte documentType; 

    //traditional getters and setters 
} 

Output: Điều này sẽ chuyển đổi các thuộc tính iddocumentUrl nhưng sẽ không chuyển đổi sở hữu documentType.

{ 
    "id": 5, 
    "document_url": "/0/301115124948.jpg" 
} 
+0

Điều này không trả lời OP người yêu cầu chính xác nếu loại trừ trường có thể được bật và tắt. –

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