私はDocumentDbを照会し、元のjsonを任意の逆シリアル化なしで返したい(私は実行するビジネスロジックがないため、逆シリアル化は不要なオーバーヘッドになります)。これは現在のSDKでできることですか?C#DocumentDbクライアントは、非直列化なしでraw jsonを返すことができますか?
ありがとう、 Soma。
私はDocumentDbを照会し、元のjsonを任意の逆シリアル化なしで返したい(私は実行するビジネスロジックがないため、逆シリアル化は不要なオーバーヘッドになります)。これは現在のSDKでできることですか?C#DocumentDbクライアントは、非直列化なしでraw jsonを返すことができますか?
ありがとう、 Soma。
現時点では、DocumentDBはSDKを介して未加工のJSONを提供していません。 Documentオブジェクトを取得するか、汎用呼び出しを使用する場合は独自のオブジェクト型を取得します。
ほとんどの場合、POCOオブジェクトにデシリアライズして、クライアントに返す前にビジネスコードで検証して使用できるようにすることが理にかなっています。しかし、クライアントに返す前に処理が不要な未処理のJSONにアクセスすることは良いことです。
これが役に立ちます。 .NET SDKでは
あなたはResourceResponse.ResponseStreamにアクセスすることができます1.9.5:
残念ながら[HttpGet]
public async Task<HttpResponseMessage> GetDocumentById(string id)
{
var documentUri = UriFactory.CreateDocumentUri(database.Id, collection.Id, id);
var resourceResponse = await _client.ReadDocumentAsync(documentUri);
resourceResponse.ResponseStream.Position = 0;
using (StreamReader reader = new StreamReader(resourceResponse.ResponseStream, Encoding.UTF8))
{
var response = Request.CreateResponse(HttpStatusCode.OK);
response.Content = new StringContent(reader.ReadToEnd(), Encoding.UTF8, "application/json");
return response;
}
}
、FeedResponseクラスはまだ同様の機能を提供していません。ユーザーボイスのリクエストhereがありますが、それまでの公式の回答はありません。
編集:私のテストでは、標準化された「Person」スタイルクラスのResponseStreamを使用すると、デシリアライゼーションのシリアライゼーションと比較して約20.50ms高速化されています。
迅速な返信をありがとうございます。 Jsonに逆シリアル化されたオブジェクトをjsonに戻す(クライアント用)、(特に私たちが逆直列化を必要としない)いくつかの不必要な作業があるようです。あなたはこれを解決する方法を見つけましたか、それともマイクロソフトが解決策を思い付くべきものですか? - ありがとう。 –
いいえ、POCOオブジェクトにデシリアライズしています。私たちは2月にDocDBチームに会い、同じ質問をしましたが、その時には回避策はありませんでした。私は彼らが将来のリリースのためにこの機能に取り組んでいるかもしれないことを覚えていると思います。プラットフォームはまだ若く、常に新しい機能をリリースしています。 – cnaegle