2014-04-08 26 views
0

我想通過RestSharp請求序列化一個列表。我得到了列表中返回的正確數量的項目,但它們的值都是空白的。我在JsonConvert上試了很多Json註釋的不同嘗試,但這是最接近我必須工作的。RestSharp非基元列表在反序列化中包含所有空值

public string updateRewards(List<Reward> rewards) 
{ 
     RestRequest request = new RestRequest(updateRewardsUrl, Method.POST); 
     request.RequestFormat = DataFormat.Json; 
     request.AddParameter("rewards", JsonConvert.SerializeObject(rewards)); 
     RestResponse response = (RestResponse)client.Execute(request); 
... 
} 

[JsonObject] 
public class Reward 
{ 
    [JsonProperty("id")] 
    public int id { get; set; } 

    [JsonProperty("reward")] 
    public string reward { get; set; } 

    [JsonProperty("title")] 
    public string title { get; set; } 
} 

在另一個端點...

​​

樣品RestRequest參數

的另一個端點

-  updateRewardsRequest  
-  rewards Count = 1 
-  [0] 
     id 0 int 
     reward null string 
     title null string 

可能的問題是接受了

- System.Collections.Generic.List<RestSharp.Parameter> 
+  [0] {rewards=[{"id":0,"reward":"test","title":"test2"}]} RestSharp.Parameter 

樣品要求二Reward的不同實例導致它無法從一個轉換到另一個?

+0

測試[this](http://stackoverflow.com/questions/11087508/restsharp-client-returns-all-properties-as-null-when-deserializing-json-response?rq=1)問題看看是否它會解決我的問題。 –

回答

0

我設法讓它工作一點點黑客。

第一個端點上的代碼保持不變;獎勵列表使用進行序列化。

在第二個端點上,我將rewards的類型定義爲string而不是List<Reward>。它顯示爲一個轉義的json字符串。從那裏,我明確地使用JsonConvert.DeserializeObject<List<Reward>>(rewards)轉換成列表。