2010-03-24 32 views
7

假設我有一些對象,如具有地址對象列表的業務和具有業務的訂單。可以配置Jackson-Json Mapper根據它正在序列化哪個對象來排除屬性?

是否可以進行配置,以便序列化訂單時排除業務對象中的地址列表,並在業務序列化時包含列表?

我正在使用ajax爲RIA提取數據,並且在處理訂單時我並不真正關心地址數據,但在處理業務時,我確實需要列表。

我也使用Hibernate進行持久化,所以這實際上是一個效率和性能優化。

回答

8

如果我理解正確的問題,是的,我認爲JSON Views傑克遜會允許這樣做。 您基本上會爲同一類型創建兩個不同的視圖(配置文件),並選擇要用於序列化的視圖。

5

您可以使用JsonIgnore Annotation忽略序列化地址列表,關閉使用註釋在ObjectMapperSerializationConfig序列化業務時。當然,這意味着您可能使用的其他註釋也會被忽略。不完美,但你可能會發現一個更好的解決方案,希望它有助於(顯然)。

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

是的,你可以做到。您所需要的只是將地址列表聲明爲您業務對象中的瞬態屬性。

然後將下面的代碼添加到您的jsonConfig:

jsonConfig.setIgnoreTransientFields(true); 
-1
@JsonIgnore 

用來忽略你不想要轉換成JSON屬性。

public class UserDocument { 

    private long id; 

    private String documentUrl; 

    @JsonIgnore 
    private byte documentType; 

    //traditional getters and setters 
} 

輸出:這將轉換屬性IDdocumentUrl但不會轉換屬性documentType

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

這並不回答OP,誰精確詢問是否可以開啓和關閉字段排除。 – 2016-02-04 19:10:31

相關問題