[英]Storing Map with Java Cloudant API
我正在使用Java Cloudant API將數據存儲在IBM Cloudant中。
我試圖在文檔中的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對象轉換為String?
首先,Cloudant不存儲Java對象,它是JSON文檔存儲。 它使用GSON將Java對象序列化為JSON文檔,因此它發送到cloudant的數據具有以下形式:
{
"_id": "aDocId",
"field1": "value1"
}
查看該庫的代碼,在創建GSON構建器時,它不包含serializeNulls()
方法。 您可以通過在調用build
方法創建客戶端之前向ClientBuilder
提供自己的GsonBuilder
實例來解決此問題。
例:
CloudantClient client = ClientBuilder.account("example")
.username("example")
.password("password")
.gsonBuilder(new GsonBuilder.serializeNulls())
.build();
但是,由於尚未測試序列化null,因此可能會導致錯誤和意外行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.