C#转Java使用相同的Azure SDK,只是不同的语言

问题描述:

我一直在试图将这个语句从C#转换为JAVA,没有太多的运气。是的,我搜索了Azure,stackoverflow等等,但在java中找不到READDOCUMENT的一个好例子。C#转Java使用相同的Azure SDK,只是不同的语言

UserInfo response = _DocumentClient.ReadDocument<UserInfo>(UriFactory.CreateDocumentUri(_DBConfiguration.DatabaseID, _DBConfiguration.DocumentCollectionId, pPhoneNumber)); 

这是据我已经得到了:

UserInfo returnUserInfo = null; 
     try { 

      //todo: document link is incorrect, but reference pPhoneNumber as key 
      ResourceResponse<Document> response = _DocumentClient.readDocument(<<NEED To generate URI>>,null); 
      if (response != null) { 
       Document returnUserInfoDocument = response.getResource(); 
       returnUserInfo = <<I have a document, but can't cast it to USERINFO>>; 
      } 
     } 
     catch (DocumentClientException ex) { 
      if (!ex.getError().getCode().equals("NotFound")) { 
       throw ex; 
      } 

     } 

     return returnUserInfo; 

我不亲自对Java软件开发工具包,但谷歌搜索turned up this的一点点经验。这个回购里面有很多使用例子。

您正在努力的部分正在生成文档URI。目前看来,在C#中,这是抽象化了一点与一些工厂方法构建字符串你,但你可以看到的例子链接在Java中的等价物是:

你的情况,你会
String documentLink = String.format("/dbs/%s/colls/%s/docs/%s", databaseName, collectionName, family.getId()); 
this.client.readDocument(documentLink, new RequestOptions()); 

所以只需使用电话号码字段(或者不管你的文档标识以这种格式与你的文档和集合ID有关)

只要将响应转换为UserInfo,就可以将响应视为JSON字符串并使用JSON在C#中我们使用Newtonsoft,但是在Java中必须有足够的选项,只要试着用Google搜索java json deserialize,我相信你能找到很多的资源。

只是为了记录我没有降低你的问题,但我可以理解人们为什么这么做,也许你可以把这当成一个成长的机会。我从字面上输入documentdb java到谷歌,前两个链接是代码示例的GitHub回购完整。在期待别人为你做你的研究之前,你应该尝试进行更加努力的搜索。

+0

Tks-你在SDK之间为我引发了一个不同的视角。 stackoverflow有很多“代码为我的问题”,但我的搜索上下文非常不同 - 我使用“Azure JAVA sdk ReadDocument” - 它返回了一个不同的结果集。我应该像你一样使用更一般的搜索,但是,您提供的链接显示了一种技术来确定文档是否存在,并通过异常进行管理。它对返回值没有任何作用,这可能是我解雇它的原因。不过,你也帮助过JSON,让我走上正轨。谢谢您的帮助! – codeputer

如果您只想如何使用Azure DocumentDB SDK for Java来访问DocumentDB,可以参考教程Azure Cosmos DB: Build a DocumentDB API app with Java and the Azure portal和GitHub上的自述文件azure-documentdb-java的自述文件。

希望它有帮助。任何问题,请随时让我知道。

+0

谢谢.. rea文章,但它使用对集合的查询。我在阅读文档方法中寻找示例或clarufication – codeputer