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上设置序列化器?
答案 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。