2013-04-01 10 views
5

quando faccio una richiesta in RestSharp in questo modo:Perché RestSharp genera un errore durante la deserializzazione di una risposta booleana?

var response = client.Execute<bool>(request); 

ottengo il seguente errore:

"Unable to cast object of type 'System.Boolean' to type 'System.Collections.Generic.IDictionary`2[System.String,System.Object]'." 

Questa è la risposta completa HTTP, per Fiddler:

HTTP/1.1 200 OK 
Cache-Control: no-cache 
Pragma: no-cache 
Content-Type: application/json; charset=utf-8 
Expires: -1 
Server: Microsoft-IIS/7.5 
X-AspNet-Version: 4.0.30319 
X-Powered-By: ASP.NET 
Date: Mon, 01 Apr 2013 15:09:14 GMT 
Content-Length: 5 

false 

Risulta che tutto è kosher con la risposta, quindi cosa dà?

Inoltre, se sto facendo qualcosa di stupido con il mio controller WebAPI restituendo un valore semplice anziché un oggetto e che risolverebbe il mio problema, sentitevi liberi di suggerire.

risposta

9

RestSharp deserializza solo json valido. false non è valido (secondo RFC-4627). Il server avrà bisogno di restituire qualcosa di simile a quanto segue al minimo:

{ "foo": false } 

e avrete bisogno di una classe come a seguito di deserializzare a:

public class BooleanResponse 
{ 
    public bool Foo { get; set; } 
} 
+0

Oh. Destra. Ciò ha senso. Colpa mia. –

+1

FYI, è esattamente quello che si suppone debba restituire "Json (true)" da RemoteValidationAttribute. Sorpreso che MSFT ci abbia restituito JSON non validi nel loro stesso esempio. Vedere: http://msdn.microsoft.com/en-us/library/gg508808(v=vs.98).aspx –

+0

WOOOOOOW, questo fa schifo –

Problemi correlati