【问题标题】:Get the results of a CosmosDb query as a Raw string (payload of the http response)以原始字符串形式获取 CosmosDb 查询的结果(http 响应的负载)
【发布时间】:2017-10-06 16:27:45
【问题描述】:

我正在使用 CosmosDB 的 .NET API,我很难弄清楚如何在 CosmosDB 查询被反序列化为类之前获得原始结果。浏览文档,我找到的所有示例都将结果转换为特定类或动态。那就是:

//This returns a Document, wich actually is a dynamic...
client.ReadDocumentAsync(...)

//This returns an object of type MyClass, wich I supose is casted internally by the API
client.ReadDocumentAsync<MyClass>(...)

我想要做的是获取结果的原始原始 JSON 有效负载来检查它,而无需将其反序列化为其他任何东西的开销。

有人知道是否可以使用 .NET api 获得原始结果?如果有,怎么做?

在其他情况下,我需要将结果用作 ExpandoObject 来动态处理它,但我发现 api 给出的“动态”结果不是“可扩展的”,所以我不得不将它们序列化然后反序列化再次以递归形式进入 ExpandoObject。此外,结果被我的对象不需要的 _rid、Etag 等属性污染了。很烦人。

我认为序列化然后再次反序列化是不必要的开销,所以也许最佳方法是获取原始 JSON 结果并编写一个方法直接反序列化到 Expando。

或者也许我失去了任何一点,并且有一个 API 可以将结果作为 Expandos。有人知道吗?

【问题讨论】:

    标签: azure-cosmosdb


    【解决方案1】:

    看看我之前的这个问题:

    Converting arbitrary json response to list of "things"

    虽然我没有命名它,但有问题的 API 实际上是 DocumentDb,所以我认为您将能够使用该代码。

    【讨论】:

      【解决方案2】:

      在这里看到了一些不好的建议,但它是原生内置在 SDK 中的。

      Document doc = cosmosClient.ReadDocumentAsync(yourDocLink);
      string json = doc.ToString();
      

      【讨论】:

      • 没有。您的代码将响应反序列化为动态,然后将其转换为字符串...
      猜你喜欢
      • 1970-01-01
      • 2013-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多