如何在Dropwizard项目中使用Couchbase Java客户端?
我一直在看这个项目,想知道是否有可能在项目中使用它 这看起来很自然,因为couchbase基本上是一个JSON数据库,但java客户端似乎与Jackson不兼容。据我所知,couchbase客户端库包含与其他所有JavaJSON库不兼容的库,这真的很奇怪 我发现一门课一开始看起来很有前途。但仔细检查后,该库使用的是Jackson的阴影版本(带有重写包如何在Dropwizard项目中使用Couchbase Java客户端?,java,jackson,couchbase,dropwizard,Java,Jackson,Couchbase,Dropwizard,我一直在看这个项目,想知道是否有可能在项目中使用它 这看起来很自然,因为couchbase基本上是一个JSON数据库,但java客户端似乎与Jackson不兼容。据我所知,couchbase客户端库包含与其他所有JavaJSON库不兼容的库,这真的很奇怪 我发现一门课一开始看起来很有前途。但仔细检查后,该库使用的是Jackson的阴影版本(带有重写包com.couchbase.client.deps.com.fasterxml.Jackson.core) 无论如何,由于dropwizard使用J
com.couchbase.client.deps.com.fasterxml.Jackson.core
)
无论如何,由于dropwizard使用Jackson和Jersey通过RESTAPI来编组JSON文档,那么使用couchbase java客户机库的摩擦最小的方法是什么?在这种情况下可能吗?这应该是可行的
将Couchbase与Dropwizard一起使用绝对是可能的。clientsdk为开发人员提供了JSON操作对象,但它也允许将JSON处理委托给Jackson或GSON之类的库。 查看
RawJsonDocument
类。
基本上,您可以使用字符串化JSON(来自任何框架)创建其中一个对象,客户端SDK将其理解为任何操作的JSON文档,即:
String content = "{\"hello\": \"couchbase\", \"active\": true}";
bucket.upsert(RawJsonDocument.create("rawJsonDoc", content));
基于答案的解决方案:
public static Document<String> toDocument(String id, Object value,
ObjectMapper mapper) throws JsonProcessingException {
return RawJsonDocument.create(id, mapper.writeValueAsString(value));
}
ObjectMapper mapper = Jackson.newObjectMapper();
User user = User.createByLoginAndName("login", "name");
bucket.insert(toDocument("123", user, mapper));