簡體   English   中英

使用Java Cloudant API存儲地圖

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM