RestSharp非原语列表包含反序列化的所有空值

时间:2014-04-08 00:33:59

标签: c# entity-framework restsharp

我正在尝试通过RestSharp请求序列化列表。我收到列表中返回的正确数量的项目,但它们的值都是空白的。我在JsonConvert尝试了很多不同的Json注释尝试,但这是我最接近工作的。

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; }
}

在另一个端点......

public object Post(UpdateRewardsRequestDTO updateRewardsRequest)
{
 ...handle request...
}

[Route("/Rewards/updateRewards", "POST")]
public class UpdateRewardsRequestDTO : IReturn<UpdateRewardsResponseDTO>
{
    public List<Reward> rewards { get; set; } //different Reward class, but exact same code as above
}

示例RestRequest参数

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

在另一个端点上收到样本请求

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

问题可能是Reward的两个不同实例导致它无法从一个转换为另一个吗?

1 个答案:

答案 0 :(得分:0)

我设法让它与一个小黑客一起工作。

第一个端点上的代码保持不变;使用JsonConvert.SerializeObject(rewards)序列化奖励列表。

在第二个端点上,我将rewards的类型定义为string而不是List<Reward>。它显示为转义的json字符串。从那里,我明确使用JsonConvert.DeserializeObject<List<Reward>>(rewards)转换为列表。