var obj = new MyObject();
Run Code Online (Sandbox Code Playgroud)
我遇到RestSharp的问题RestRequest.AddBody(obj); 正确序列化对象.
class MyObject
{
[JsonProperty(PropertyName="a")]
public A{get;set;}
[JsonProperty(PropertyName="b")]
public B{get;set;}
}
Run Code Online (Sandbox Code Playgroud)
问题是AddBody序列化器没有考虑我的JsonProperty属性,我似乎可以弄清楚如何在RestRequest或RestClient上设置序列化器?
我发现以下链接解决了缺少属性支持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;
Run Code Online (Sandbox Code Playgroud)
并实现了以下类来覆盖默认的JsonSerializer New Json Serializer
我用了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; }
}
Run Code Online (Sandbox Code Playgroud)
它对我来说效果很好,它读取属性并正确序列化所有类型。但是我没有对所有类型进行测试。文档说RootElement,Namespace和DateFormat不用于json。
| 归档时间: |
|
| 查看次数: |
6889 次 |
| 最近记录: |