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 上有一个关于此的问题。
我正在尝试与 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 上有一个关于此的问题。