2014-04-08 24 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)转换成列表。