2016-05-06 7 views

Antwort

2

Gute Frage. Derzeit bietet DocumentDB kein JSON über das SDK an. Sie erhalten entweder immer ein Document-Objekt oder, wenn Sie einen generischen Aufruf verwenden, Ihren eigenen Objekttyp.

In den meisten Fällen ist es sinnvoll, in ein POCO-Objekt zu deserialisieren, damit es validiert und in Business-Code verwendet werden kann, bevor es zum Client zurückkehrt. Aber es wäre schön, Zugriff auf das rohe JSON zu haben, wo keine Verarbeitung erforderlich ist, bevor es an den Client zurückgegeben wird.

Hoffe, das hilft.

+1

Vielen Dank für die schnelle Antwort. Json zu Deserialized-Objekt zurück zu Json (für Client), scheint einige unnötige Arbeit (vor allem, wenn wir Deserialisierung nicht benötigen). Haben Sie einen Weg gefunden, dies zu lösen, oder muss Microsoft eine Lösung anbieten? Danke -Soma. –

+0

Nein, wir deserialisieren POCO-Objekte. Wir haben uns im Februar mit dem DocDB-Team getroffen und die gleiche Frage gestellt, und sie hatten zu der Zeit keinen Weg damit. Ich denke, ich erinnere mich, dass sie an dieser Funktion für eine zukünftige Version arbeiten werden. Die Plattform ist noch jung und sie veröffentlichen ständig neue Funktionen. – cnaegle

1

In .NET SDK 1.9.5 Sie ResourceResponse.ResponseStream zugreifen:

[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; 
    } 
} 

Leider hat FeedResponse Klasse nicht eine ähnliche Funktionalität bieten noch. Es gibt eine UserVoice-Anfrage here, aber bisher keine offizielle Antwort.

Edit: in meinen Tests sehe ich etwa 20..50ms schnellere Ergebnisse für Standard "Person" Stil Klasse mit ResponseStream, im Vergleich zu Deserialisierung-Serialisierung.