获取CosmosDb查询的结果作为原始字符串(http响应的有效负载)

时间:2017-10-06 16:27:46

标签: azure-cosmosdb

我正在使用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获得。有人知道吗?

2 个答案:

答案 0 :(得分:0)

查看我之前的这个问题:

Converting arbitrary json response to list of "things"

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

答案 1 :(得分:-1)

这里看到了一些不好的建议,但它本身内置于SDK中。

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