2013-04-01 7 views
5

Kiedy złożyć wniosek w RestSharp tak:Dlaczego RestSharp wyświetla błąd podczas deserializacji odpowiedzi boolowskiej?

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

pojawia się następujący błąd:

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

To jest odpowiedź pełna HTTP, za Fiddler: Wydaje

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 

że wszystko jest koszerne z odpowiedzią, więc co daje?

Ponadto, jeśli robię coś głupiego z moim kontrolerem WebAPI, zwracając prostą wartość zamiast obiektu i to naprawi mój problem, proszę zasugerować.

Odpowiedz

9

RestSharp usunie tylko prawidłowy json. false nie jest poprawny json (zgodnie z RFC-4627). Serwer będzie musiał powrócić coś jak następuje przynajmniej:

{ "foo": false } 

i trzeba klasę jak się po deserializacji do:

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

oh. Dobrze. To ma sens. Mój błąd. –

+1

FYI, właśnie to powinieneś zwrócić "Json (true)" z RemoteValidationAttribute. Zaskoczony, że MSFT kazał nam zwrócić nieprawidłowy JSON we własnym przykładzie. Zobacz: http://msdn.microsoft.com/en-us/library/gg508808(v=vs.98).aspx –

+0

WOOOOOOW, to jest do bani –