Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.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
如何在Dropwizard项目中使用Couchbase Java客户端?_Java_Jackson_Couchbase_Dropwizard - Fatal编程技术网

如何在Dropwizard项目中使用Couchbase Java客户端?

如何在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

我一直在看这个项目,想知道是否有可能在项目中使用它

这看起来很自然,因为couchbase基本上是一个JSON数据库,但java客户端似乎与Jackson不兼容。据我所知,couchbase客户端库包含与其他所有JavaJSON库不兼容的库,这真的很奇怪

我发现一门课一开始看起来很有前途。但仔细检查后,该库使用的是Jackson的阴影版本(带有重写包
com.couchbase.client.deps.com.fasterxml.Jackson.core


无论如何,由于dropwizard使用Jackson和Jersey通过RESTAPI来编组JSON文档,那么使用couchbase java客户机库的摩擦最小的方法是什么?在这种情况下可能吗?

这应该是可行的

  • 客户端向dw服务器请求资源人员
  • DW服务器请求couchebase,获取表示Person的Pojo或表示Person的JSON
  • 如果是JSON,则在DW中创建一个带有Jackson注释的POJO,并将其返回给客户端
  • 如果是特殊的couchebase pojo,请将其映射到Jackson pojo并返回到客户机

  • 将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));