2016-02-24 29 views
1

我正在使用Java Cloudant API將數據存儲在IBM Cloudant中。使用Java Cloudant API存儲映射

我試圖在文檔中爲HashMap中的鍵存儲null值。

以下是在數據庫中插入HashMap的代碼。

Map<String, Object> map = new HashMap<String, Object>(); 
map.put("field1", "value1"); 
map.put("field2", null); 
db.save(map); 

文件被成功存儲,但該文件不包含FIELD2關鍵的。

(即)當哈希映射中的鍵的值爲空時,相應的鍵不存儲在Cloudant中。

對此的任何想法。?我哪裏錯了?

Cloudant如何在內部存儲Java對象?

它是否將Java對象轉換爲字符串內部?

+0

你也可以使你自己的對象NullObject,可以避免使用空 –

回答

1

首先,Cloudant不存儲Java對象,它是一個JSON文檔存儲。它採用GSON以連載的Java對象爲JSON文件,因此將其發送到cloudant數據的形式爲:

{ 
    "_id": "aDocId", 
    "field1": "value1" 
} 

code for the library看,創建GSON建設者,當它不包括serializeNulls()方法。在調用build方法創建客戶端之前,您可以通過在ClientBuilder上提供自己的GsonBuilder實例來解決此問題。

例子:

CloudantClient client = ClientBuilder.account("example") 
          .username("example") 
          .password("password") 
          .gsonBuilder(new GsonBuilder.serializeNulls()) 
          .build(); 

但是這是說這可能會導致錯誤意外的行爲,因爲連載尚未經過測試空。

+0

哇!這是一個有用的信息! +1 – practice2perfect