RestSharp RestRequest.AddBody不使用Newton.Json属性

时间:2013-03-12 20:15:23

标签: c# restsharp

var obj = new MyObject();

我遇到RestSharp问题RestRequest.AddBody(obj);正确序列化对象。

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

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

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

2 个答案:

答案 0 :(得分:5)

我找到了以下链接,解决了缺少属性支持RestSharp Deserialization

的问题

覆盖默认序列化程序

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

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;

并实现了以下类来覆盖默认的JsonSerializer New Json Serializer

答案 1 :(得分:4)

我使用了tafaju的答案并为此实现了json的序列化器。

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; }

}

它对我来说非常有效,它可以读取属性并正确序列化所有类型。但我并没有对所有类型进行测试。 文档说RootElement,Namespace,DateFormat不用于json。