2014-05-08 54 views
0

我正在使用Morphia(ver 0.99)爲我的JSON到Pojo映射到我的MongoDB(2.0版本)。在Web客戶端和我的服務器之間傳輸數據的工作正常。但是現在我有一個用例,我不知道哪種模式最合適。我可以使用Morphia或MongoDB Java驅動程序來實現我的要求,還是需要使用Jackson和JPA 2.2表示法?反序列化MongoDB中的JSON對象數組

這是我的用例;

    上選擇集合
  1. 調用嗎啡查詢(MongoDB的)
  2. 使用的POJO的業務邏輯和演示(Primefaces)
  3. 也由此POJO的年代的ArrayList轉換爲對象的JSON陣列所產生的ArrayList,但除去在未在web的客戶機
  4. 按下轉換JSON到web的客戶機以供呈現所需的轉化POJO屬性

Morphia轉換一個Pojo是直接的,但我該如何轉換一個數組?

return morph.toDBObject(obj).toString(); 

有沒有像嗎啡@JsonIgnore的符號忽略的轉換和從JSON?

如何在我的用例中最有效地(不使用更多的庫,如果可能的話)解決第三步。將ArrayList轉換爲JSON並忽略一些Pojo屬性的轉換?

回答

0

我想出了一個解決我的問題。這可能不是最優雅的,但它按照我想要的方式工作,我不必包括其他庫(如Gson和Jackson)將我的Pojo的數組列表反序列化爲Json,我只使用MongoDB Java驅動程序中的類和Morphia API。我還添加了一個簡單的參數列表,去除不必要的屬性值,並將其推送到客戶端。

public static String deserializeToJSON(List<?> objList, String... removeAttributes) { 
    List<DBObject> dbObjList = new ArrayList<>(objList.size()); 
    DBObject dbObj; 
    for(Object obj :objList){ 
     dbObj = morph.toDBObject(obj); 
     for(int i=0; i < removeAttributes.length; i++){ 
     debug("Removed DBObject filed: " +dbObj.removeField(removeAttributes[i]));          
     } 
     dbObjList.add(dbObj); 
    }    
    String json = JSON.serialize(dbObjList); 
    return json; 
}