C# 非原语的RestSharp列表包含反序列化时的所有空值
我正在尝试通过RestSharp请求序列化列表。我得到了列表中返回的项目的正确数量,但是它们的值都是空的。我在JsonConvert上尝试了许多不同的Json注释尝试,但这是我最接近工作的尝试C# 非原语的RestSharp列表包含反序列化时的所有空值,c#,entity-framework,restsharp,C#,Entity Framework,Restsharp,我正在尝试通过RestSharp请求序列化列表。我得到了列表中返回的项目的正确数量,但是它们的值都是空的。我在JsonConvert上尝试了许多不同的Json注释尝试,但这是我最接近工作的尝试 public string updateRewards(List<Reward> rewards) { RestRequest request = new RestRequest(updateRewardsUrl, Method.POST); request.R
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; }
}
问题可能是两个不同的
奖励实例导致它无法从一个转换到另一个吗?
第一个端点上的代码保持不变;奖励列表是使用JsonConvert.SerializeObject(奖励)
序列化的
在第二个端点上,我将奖励的类型定义为字符串
,而不是列表
。它显示为一个转义的json字符串。从这里开始,我显式地使用JsonConvert.DeserializeObject(rewards)
转换为列表 测试问题,看看它是否能解决我的问题。
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
}
- 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