2015-02-06 67 views
3

我正在尝试与一个REST服务通话,并且我正在尝试调用一个POST方法,我需要在邮件正文中提供一些数据。RestSharp - 如何影响JSON序列化(命名)?

我有我的模型类均能设置是这样的:

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

,我使用RestSharp在C#中调用我的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); 

一切似乎都工作正常 - 不会引发异常。但服务与响应:

我们正在处理您的请求

遇到问题时,我看着那个东西被发送请求JSON,我看到所有属性都是大写拼音:

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

,这导致了问题 - 服务节选它们全部用小写:

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

于是,我来装饰我的C#模型类属性:

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#模型类生成的JSON中的属性名称?

+0

@CodeCaster:是的,似乎是在处理同样的问题。但是:如果将答案移到那里,我将无法接受它:-( – 2015-02-06 11:42:21

回答