RestSharp - 如何影响 JSON 序列化(命名)?

RestSharp - how to influence JSON serialization (naming)?

我正在尝试与 REST 服务通信,我正在尝试调用 POST 方法,我需要在 post 正文中提供一些数据。

我有我的模型 class 都很好地设置如下:

public class MyRequestClass
{
    public string ResellerId { get; set; }
    public string TransactionId { get; set; }
    ... other properties of no interest here ... 
}

并且我在 C# 中使用 RestSharp 来调用我的 REST 服务,如下所示:

RestClient _client = new RestClient(someUrl);

var restRequest = new RestRequest("/post-endpoint", Method.POST);
restRequest.RequestFormat = DataFormat.Json;
restRequest.AddHeader("Content-Type", "application/json");

restRequest.AddJsonBody(request);   // of type "MyRequestClass"

IRestResponse<MyResponse> response = _client.Execute<MyResponse>(restRequest);

一切似乎都运行良好 - 没有抛出异常。但服务响应:

We are experiencing problem in processing your request

当我查看正在发送的请求 JSON 时,我发现所有属性都是大写拼写:

{ "ResellerId":"123","TransactionId":"456" }

这是导致问题的原因 - 服务将它们全部小写:

{ "resellerId":"123","transactionId":"456" }

所以我尝试用属性装饰我的 C# 模型 class:

public class MyRequestClass
{
    [RestSharp.Serializers.SerializeAs(Name = "resellerId")]
    public string ResellerId { get; set; }

    [RestSharp.Serializers.SerializeAs(Name = "transactionId")]
    public string TransactionId { get; set; }
    ... other properties of no interest here ... 
}

但这似乎没有改变任何东西 - JSON 请求仍然有 属性 大写拼写的名称,因此调用失败。

如何告诉 RestSharp 在从 C# 模型 class 生成的 JSON 中始终使用 小写 属性 名称?

编辑:此答案已过时。阅读@marc_s分享的thread。我不会删除这个答案,因为它曾经有用。

您可以或应该将 Json.NET 添加到 RestSharp。

github repo of RestSharp 上有一个关于此的问题。