2012-03-29 124 views
3

我正在使用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; } 
} 

,但它沒有得到應該自動反序列化。

回答

1

類應該有成員打上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