反序列化响应

问题描述:

我正在使用RestRequest对Web服务进行POST。响应采用JSON格式,但我将其作为响应内容获取。作为ASCII的内容和数据为空。代码:反序列化响应

 var request = new RestRequest(api, Method.POST); 
     request.RequestFormat = DataFormat.Json; 
     request.AddObject(data); 

     RestClient client = new RestClient("http://IP:PORT/proto");   
     client.ExecuteAsync<jLoginResponse>(request, (response) => 
     { 
      var resource = response.Data; 
     }); 

这里response.Data是空的,内容是 { “UID”: “1234”}

jLoginResponse被声明为

[DataContract] 
public class jLoginResponse 
{ 
    public string uid { get; set; } 
} 

,但它没有得到应该自动反序列化。

类应该有成员打上DataMember,像这样:

[DataContract] 
public class jLoginResponse 
{ 
    [DataMember] 
    public string uid { get; set; } 
} 
+0

没有它不应该,RestSharp不使用此占位符。问题在于该服务器将json作为文本发布,而不是application/json。 – Marin 2012-03-29 18:51:18

+0

RestSharp使用JSON.net进行JSON序列化,如果将JSON.net设置为“Explict Serialization”,它可以使用属性(占位符),甚至每个示例都有它自己的JsonProperty ...但我很高兴问题是解决了! – 2012-03-29 20:31:07

+0

因此,如果我将它设置为显式,我可以使用[DataMember Name =“...”],它会正确评估它? – Marin 2012-03-30 12:06:43