Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用javacloudantapi存储地图_Java_Hashmap_Cloudant - Fatal编程技术网

用javacloudantapi存储地图

用javacloudantapi存储地图,java,hashmap,cloudant,Java,Hashmap,Cloudant,我正在使用JavaCloudAntAPI在IBMCloudAnt中存储数据 我试图将HashMap中的键的null值存储在文档中 下面是在数据库中插入哈希映射的代码 Map<String, Object> map = new HashMap<String, Object>(); map.put("field1", "value1"); map.put("field2", null); db.save(map); Map Map=newhashmap(); 地图放

我正在使用JavaCloudAntAPI在IBMCloudAnt中存储数据

我试图将HashMap中的键的
null
值存储在文档中

下面是在数据库中插入哈希映射的代码

 Map<String, Object> map = new HashMap<String, Object>();
 map.put("field1", "value1");
 map.put("field2", null);
 db.save(map);
Map Map=newhashmap();
地图放置(“字段1”、“值1”);
map.put(“field2”,空);
db.save(map);
文档已成功存储,但文档根本不包含field2键

(即)当hashmap中的键的值为null时,相应的键不存储在Cloudant中

对此有什么想法吗。?我哪里做错了

Cloudant如何在内部存储Java对象


它是否在内部将Java对象转换为字符串

首先,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();

但是,这可能会导致错误和意外行为,因为序列化空值尚未测试

您还可以创建自己的对象空值对象,以避免使用空值