gpt4 book ai didi

java - Cloudant 库在保存文档时添加不必要的属性

转载 作者:行者123 更新时间:2023-12-02 03:10:50 27 4
gpt4 key购买 nike

这个问题很可能是因为 JSONObject(org.json.JSONObject) 与 cloudant 库不兼容。

是否有使用其他对象的替代方法?

我正在使用以下 cloudant 库,

<dependency>
<groupId>com.cloudant</groupId>
<artifactId>cloudant-client</artifactId>
<version>2.6.2</version>
</dependency>

这是我的代码

package data.repositories;

import org.json.JSONObject;
import com.cloudant.client.api.*;
import com.cloudant.client.api.CloudantClient;
import com.cloudant.client.api.Database;
import com.cloudant.client.api.model.Response;
import util.Config;

public class DatabaseRepository {

CloudantClient client = ClientBuilder.account(Config.CLOUDANT_ACCOUNT_NAME)
.username(Config.CLOUDANT_USER_NAME)
.password(Config.CLOUDANT_PASSWORD).build();

public DatabaseRepository() {
JSONObject
}

public void Save(String dbName) {
Database db = client.database("dbTempName", true);
JSONObject jsonObject = new JSONObject("{hello: data}");
db.save(jsonObject);
}
}

保存在cloudant数据库中的文档是,

{
"_id": "1c7f223f74a54e7c9f4c8a713feaa537",
"_rev": "1-a3cd12379eec936b61f899c8278c9d62",
"map": {
"hello": "data"
}
}

最佳答案

我不熟悉cloudant,但我猜测 JsonObject 有一个名为“map”的属性,它保存您的 json 字符串数据(可能还有一个 myArray 属性),并且 cloudant 将其序列化为 json,从而添加这些 不必要的值。

我的建议:

1) 尝试像 db.save("{hello: data}") 一样直接保存 json 字符串以避免序列化

2) 如果您确实需要创建 JsonObject,请尝试自定义 cloudant 的序列化过程以避免额外的字段。

回复评论:

根据我读到的here ,那么我认为你需要一个 pojo,当序列化为 json 时,它看起来像:

{ 'hello' : 'data' }

类似于:

public class MyClass implements Serializable {
String hello;

public MyClass(String hello) {
this.hello = hello;
}

public String getHello() {
return hello;
}
}

然后保存它:

db.save(new MyClass("data"));

或者你可以使用 hashmap 代替 pojo:

Map<String, Object> map = new Hashmap ...
map.put("hello", "data");
db.save(map);

关于java - Cloudant 库在保存文档时添加不必要的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41079707/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com