C# RestSharp RestRequest.AddBody未使用Newton.Json属性

C# RestSharp RestRequest.AddBody未使用Newton.Json属性,c#,restsharp,C#,Restsharp,我在获取RestSharpRestRequest.AddBody(obj)时遇到问题;以正确序列化对象 var obj = new MyObject(); 问题是AddBody序列化程序没有考虑到我的JsonProperty属性,我似乎可以弄清楚如何在RestRequest或RestClient上设置序列化程序?我找到了以下链接,解决了缺少属性支持的问题 重写默认序列化程序 使用XML或JSON请求体发出请求时,可以指定自己要使用的ISerializer实现 class MyObject {

我在获取RestSharp
RestRequest.AddBody(obj)
时遇到问题;以正确序列化对象

var obj = new MyObject();

问题是AddBody序列化程序没有考虑到我的JsonProperty属性,我似乎可以弄清楚如何在RestRequest或RestClient上设置序列化程序?

我找到了以下链接,解决了缺少属性支持的问题

重写默认序列化程序

使用XML或JSON请求体发出请求时,可以指定自己要使用的ISerializer实现

class MyObject
{
   [JsonProperty(PropertyName="a")]
   public A{get;set;}

   [JsonProperty(PropertyName="b")]
   public B{get;set;}
}

并实现了下面的类来覆盖默认的JsonSerializer

我使用了tafaju的答案,并实现了json的序列化程序,如下所示

var request = new RestRequest();
request.RequestFormat = RequestFormat.Xml;
request.XmlSerializer = new SuperXmlSerializer(); // implements ISerializer
request.AddBody(person); // object serialized to XML using your custom serializer;
它非常适合我,它读取属性并正确序列化所有类型。但我并没有用所有的类型测试它。
文档中说,RootElement、Namespace和DateFormat不用于json。

您是否找到了一种全局设置的方法,而不是每个请求?如果针对客户机而不是单个请求实现,同样的方法也会起作用,但在我的情况下,我不希望该行为通过所有请求级联,只是需要在存储库对象配置和对象的API版本之间进行一次性投影的特定实例。您在客户端上设置了哪种方法/属性来实现这一点?我知道我可以使用
AddHandler
添加默认的
反序列化程序
,但我不知道如何添加默认的
序列化程序
。@NilsH您知道如何在客户端全局设置它吗?我只能通过
request.JsonSerializer=new MyCustomSerializer()查看如何在请求上执行此操作
public class CustomJsonSerializer : ISerializer
{
    public CustomJsonSerializer()
    {
        ContentType = "application/json";
    }

    public string Serialize(object obj)
    {
        return JsonConvert.SerializeObject(obj);
    }

    public string RootElement { get; set; }

    public string Namespace { get; set; }

    public string DateFormat { get; set; }

    public string ContentType { get; set; }

}