假設我有一些對象,如具有地址對象列表的業務和具有業務的訂單。可以配置Jackson-Json Mapper根據它正在序列化哪個對象來排除屬性?
是否可以進行配置,以便序列化訂單時排除業務對象中的地址列表,並在業務序列化時包含列表?
我正在使用ajax爲RIA提取數據,並且在處理訂單時我並不真正關心地址數據,但在處理業務時,我確實需要列表。
我也使用Hibernate進行持久化,所以這實際上是一個效率和性能優化。
假設我有一些對象,如具有地址對象列表的業務和具有業務的訂單。可以配置Jackson-Json Mapper根據它正在序列化哪個對象來排除屬性?
是否可以進行配置,以便序列化訂單時排除業務對象中的地址列表,並在業務序列化時包含列表?
我正在使用ajax爲RIA提取數據,並且在處理訂單時我並不真正關心地址數據,但在處理業務時,我確實需要列表。
我也使用Hibernate進行持久化,所以這實際上是一個效率和性能優化。
如果我理解正確的問題,是的,我認爲JSON Views傑克遜會允許這樣做。 您基本上會爲同一類型創建兩個不同的視圖(配置文件),並選擇要用於序列化的視圖。
您可以使用JsonIgnore Annotation忽略序列化地址列表,關閉使用註釋在ObjectMapper的SerializationConfig序列化業務時。當然,這意味着您可能使用的其他註釋也會被忽略。不完美,但你可能會發現一個更好的解決方案,希望它有助於(顯然)。
ObjectMapper mapper = new ObjectMapper();
mapper.getSerializationConfig().disable(Feature.USE_ANNOTATIONS);
是的,你可以做到。您所需要的只是將地址列表聲明爲您業務對象中的瞬態屬性。
然後將下面的代碼添加到您的jsonConfig:
jsonConfig.setIgnoreTransientFields(true);
@JsonIgnore
用來忽略你不想要轉換成JSON屬性。
public class UserDocument {
private long id;
private String documentUrl;
@JsonIgnore
private byte documentType;
//traditional getters and setters
}
輸出:這將轉換屬性ID和documentUrl但不會轉換屬性documentType。
{
"id": 5,
"document_url": "/0/301115124948.jpg"
}
這並不回答OP,誰精確詢問是否可以開啓和關閉字段排除。 – 2016-02-04 19:10:31