2013-04-01 15 views
5

Wenn ich eine Anfrage in RestSharp machen etwa so:Warum wirft RestSharp beim Deserialisieren einer booleschen Antwort einen Fehler?

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

ich die folgende Fehlermeldung erhalten:

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

Das ist kompletter HTTP-Antwort, pro Fiedler:

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 

Es scheint, dass alles mit der Antwort koscher ist, also was gibt es?

Wenn ich etwas Dummes mit meinem WebAPI-Controller mache, indem ich einen einfachen Wert anstelle eines Objekts zurückgebe und das würde mein Problem beheben, dann können Sie mir vorschlagen.

Antwort

9

RestSharp wird nur gültigen JSer deserialisieren. false ist nicht gültig json (nach RFC-4627). Der Server muss so etwas wie das folgende am wenigsten zurück:

{ "foo": false } 

Und Sie werden eine Klasse müssen wie auf folgendes deserialisieren:

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

Oh. Recht. Das macht Sinn. Mein Fehler. –

+1

FYI, das ist genau das, was Sie "Json (true)" von einem RemoteValidationAttribute zurückgeben sollen. Überrascht, dass MSFT uns in ihrem eigenen Beispiel ungültige JSON zurückgibt. Siehe: http://msdn.microsoft.com/en-us/library/gg508808(v=vs.98).aspx –

+0

WOOOOOOW, das saugt –

Verwandte Themen