8
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 上设置序列化程序?

4

2 回答 2

5

我发现以下链接解决了缺少属性支持RestSharp 反序列化的问题

覆盖默认序列化程序

当使用 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

于 2013-03-12T20:32:53.993 回答
5

我已经使用了 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。

于 2014-07-22T19:39:01.097 回答