我目前正在解析一个 Web 服务,该服务向我提供 Json 文档作为响应。我想使用 java 将它们存储在 CouchDb 中,但我找不到方法。使用 java 的 couchdb 库(Ektorp、couchdb4j 等...),我只能将 java 文档存储在数据库中,这意味着我必须将原始 json 转换为 java 文档才能存储它们。 你知道我如何直接存储原始 json 吗? 非常感谢提前
最佳答案
Ektop 文档提供 an example使用存储在文件中的 JSON 更新文档:
File file = someMethodToGetFile();
InputStream jsonInputStream = new FileInputStream(file);
db.update("document_id",
jsonInputStream,
file.length(),
null);
如果您的 JSON 位于 Java 程序的内存中(例如作为字符串),则可以将字符串包装在 ByteArrayInputSteam
中,而不是使用 FileInputStream
:
String yourJsonString = ...
InputStream jsonInputStream = new ByteArrayInputStream(yourJsonString.getBytes());
db.update("document_id",
jsonInputStream,
file.length(),
null);
或者,CouchDB 是通过 Restful API 访问的,因此您可以使用任何理解 REST 的 Java 库与 CouchDB 进行交互,例如使用 Apache HttpClient :
String yourJsonString = ...
StringRequestEntity requestEntity = new StringRequestEntity(
yourJsonString,
"application/json",
"UTF-8");
PostMethod postMethod = new PostMethod("http://couchdb.server/database");
postMethod.setRequestEntity(requestEntity);
int statusCode = httpClient.executeMethod(postMethod);
关于java - 如何使用 java 在 Couchdb 中存储原始 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28274811/