繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM