我正在尝试通过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
的两个不同实例导致它无法从一个转换为另一个吗?
答案 0 :(得分:0)
我设法让它与一个小黑客一起工作。
第一个端点上的代码保持不变;使用JsonConvert.SerializeObject(rewards)
序列化奖励列表。
在第二个端点上,我将rewards
的类型定义为string
而不是List<Reward>
。它显示为转义的json字符串。从那里,我明确使用JsonConvert.DeserializeObject<List<Reward>>(rewards)
转换为列表。