[英]RestSharp list of non primitives contain all null values on deserialization
我正在尝试通过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
两个不同实例导致其无法从一个实例转换为另一个实例吗?
我设法通过一点技巧使其工作。
第一个端点上的代码保持不变; 奖励列表使用JsonConvert.SerializeObject(rewards)
序列化。
在第二个端点上,我将rewards
的类型定义为string
而不是List<Reward>
。 它显示为转义的json字符串。 从那里,我明确地使用JsonConvert.DeserializeObject<List<Reward>>(rewards)
转换为列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.